【C++】字符串 1478 - 出現次數最多的小寫字母 1475 - 字符串對比 1098 - 判斷是否構成回文 1102 - 字符串中的空格移位

文章目錄

  • 問題一:1478 - 出現次數最多的小寫字母
  • 問題二:1475 - 字符串對比
  • 問題三:1098 - 判斷是否構成回文
  • 問題四:1102 - 字符串中的空格移位
  • 五、感謝

問題一:1478 - 出現次數最多的小寫字母

類型:字符串


題目描述:

輸入一個由小寫字母組成的字符串(字符數量≤100 ),輸出出現次數最多的小寫字母。
注意:如果有多個小寫字母出現的次數一樣多,則輸出ASCII碼值最大的那個字母。

輸入:

一個字符串。

輸出:

出現次數最多的小寫字母。

樣例:

輸入:

aaabbbbbbbbbcdxs

輸出:

b

1.分析問題

  1. 已知:一個字符串。
  2. 未知:出現次數最多的小寫字母。
  3. 關系:統計。

2.定義變量

  • 定義字符數組s用于存儲輸入的字符串,整型數組a用于統計26個小寫字母出現的次數,變量m用于記錄最大出現次數,字符c用于存儲出現次數最多的字符
string s;
int a[26]={0}; 
int m = 0;
char c;

3.輸入數據

  • 從標準輸入讀取一行字符串,存放在字符數組s中
   getline(cin,s);// 遍歷字符串s中的每一個字符(假設只包含小寫字母)for (int i = 0; i < s.length(); i++) {// 將當前字符轉換為字母索引(ASCII碼減去97,因為'a'的ASCII碼是97),然后增加對應索引位置的計數器a[s[i] - 97]++;}

4.數據計算

  • 遍歷計數器數組a,當遇到計數器不為0且大于或等于已知的最大出現次數時,更新最大出現次數m以及對應的字符c。
// 遍歷整個計數器數組a,查找出現次數最多的字符for (int i = 0; i < 26; i++) {// 如果當前計數器不為0并且大于或等于已知的最大出現次數,則更新最大出現次數以及對應的字符if (a[i] != 0 && a[i] >= m) {m = a[i];c = (char)(i + 97);}}  

5.輸出結果

  • 輸出變量c,即出現次數最多的字符。
    cout << c;return 0; // 程序正常結束,返回0

完整代碼如下:

#include <bits/stdc++.h> // 引入C++標準庫頭文件,包含了大部分常用的輸入輸出和數據處理函數
using namespace std; // 使用std命名空間int main() {// 定義字符數組s用于存儲輸入的字符串,整型數組a用于統計26個小寫字母出現的次數,變量m用于記錄最大出現次數,字符c用于存儲出現次數最多的字符	string s;int a[26]={0}; int m = 0;char c;// 從標準輸入讀取一行字符串,存放在字符數組s中getline(cin,s);// 遍歷字符串s中的每一個字符(假設只包含小寫字母)for (int i = 0; i < s.length(); i++) {// 將當前字符轉換為字母索引(ASCII碼減去97,因為'a'的ASCII碼是97),然后增加對應索引位置的計數器a[s[i] - 97]++;}// 遍歷整個計數器數組a,查找出現次數最多的字符for (int i = 0; i < 26; i++) {// 如果當前計數器不為0并且大于或等于已知的最大出現次數,則更新最大出現次數以及對應的字符if (a[i] != 0 && a[i] >= m) {m = a[i];c = (char)(i + 97);}}  // 輸出出現次數最多的字符cout << c;return 0; // 程序正常結束,返回0
}

問題二:1475 - 字符串對比

類型:字符串、藍橋杯


題目描述:

給定兩個僅由大寫字母或小寫字母組成的字符串(長度介于1到100之間),它們之間的關系是以下4種情況之一:

  • 1:兩個字符串長度不等。比如 Beijing 和 Hebei
  • 2:兩個字符串不僅長度相等,而且相應位置上的字符完全一致(區分大小寫),比如 Beijing 和 Beijing
  • 3:兩個字符串長度相等,相應位置上的字符僅在不區分大小寫的前提下才能達到完全一致(也就是說,它并不滿足情況2)。比如 beijing 和 BEIjing
  • 4:兩個字符串長度相等,但是即使是不區分大小寫也不能使這兩個字符串一致。比如 Beijing 和 Nanjing
    編程判斷輸入的兩個字符串之間的關系屬于這四類中的哪一類,給出所屬的類的編號。

輸入:

包括兩行,每行都是一個字符串。

輸出:

僅有一個數字,表明這兩個字符串的關系編號 。

樣例:

輸入:

BEIjing 
beiJing 

輸出:

3

在這里插入圖片描述


1.分析問題

  1. 已知:兩個字符串。
  2. 未知:這兩個字符串的關系。
  3. 關系:字符比較。

2.定義變量

	//二、數據定義 string s1,s2;

3.輸入數據

  • 通過getline(cin, s1)和getline(cin, s2)分別獲取用戶輸入的兩行字符串。
	//三、數據輸入 getline(cin,s1);getline(cin,s2);

4.數據計算

  • 使用transform函數配合::tolower將s1和s2中的所有字符轉換為小寫并存入lowerS1和lowerS2中。
	string lowerS1 = s1; // 創建一個新的字符串lowerS1作為s1的小寫副本string lowerS2 = s2; // 創建一個新的字符串lowerS2作為s2的小寫副本transform(lowerS1.begin(), lowerS1.end(), lowerS1.begin(), ::tolower); // 將lowerS1中的所有字符轉換為小寫transform(lowerS2.begin(), lowerS2.end(), lowerS2.begin(), ::tolower); // 將lowerS2中的所有字符轉換為小寫
  • 根據字符串長度和比較結果輸出對應的數字。
  • 如果s1和s2長度不相等,則輸出1。
  • 如果s1和s2長度相等且內容完全相同(區分大小寫),則輸出2。
  • 如果s1和s2長度相等,內容雖不完全相同但將所有字符轉為小寫后相等,則輸出3。
  • 若以上條件都不滿足,則輸出4。
   if(s1.length()==s2.length()){if(s1==s2){cout<<2;}else if(lowerS1 == lowerS2){cout<<3;}else{cout<<4;}}else{cout<<1;}

5.輸出結果

	//五、輸出結果 return 0;

完整代碼如下:

#include <bits/stdc++.h> // 包含所有標準庫頭文件
using namespace std; // 使用標準命名空間int main() {// 一、分析問題// 已知:有兩個字符串s1和s2// 未知:兩個字符串的關系(長度是否相等,內容是否相同或忽略大小寫后是否相同)// 關系:根據特定規則輸出對應的數字代碼// 二、數據定義 string s1, s2; // 定義兩個字符串變量用于存儲輸入的字符串// 三、數據輸入 getline(cin, s1); // 從標準輸入讀取一行并存入s1(直到遇到換行符)getline(cin, s2); // 同樣方法讀取第二行并存入s2// 四、數據計算 string lowerS1 = s1; // 創建一個新的字符串lowerS1作為s1的小寫副本string lowerS2 = s2; // 創建一個新的字符串lowerS2作為s2的小寫副本transform(lowerS1.begin(), lowerS1.end(), lowerS1.begin(), ::tolower); // 將lowerS1中的所有字符轉換為小寫transform(lowerS2.begin(), lowerS2.end(), lowerS2.begin(), ::tolower); // 將lowerS2中的所有字符轉換為小寫if (s1.length() == s2.length()) { // 如果字符串長度相等if (s1 == s2) { // 若內容完全相同(區分大小寫)cout << 2; // 輸出數字2} else if (lowerS1 == lowerS2) { // 若內容不完全相同但忽略大小寫后相等cout << 3; // 輸出數字3} else { // 其他情況,即長度相等但內容既不全同也不全小寫相等cout << 4; // 輸出數字4}} else { // 若字符串長度不相等cout << 1; // 輸出數字1}// 五、輸出結果 return 0; // 程序執行成功結束,返回值為0
}

問題三:1098 - 判斷是否構成回文

類型:字符串


題目描述:

輸入一串字符,字符個數不超過100 ,且以 . 結束。
判斷它們是否構成回文,如果不含 . 能構成回文輸出 TRUE,否者輸出 FALSE。

輸入:

輸入只有一行,包括一串字符。(測試數據不含空格)。

輸出:

輸出只有一行,TRUE 或者 FALSE 。

樣例:

輸入:

12321.

輸出:

TRUE

在這里插入圖片描述


1.分析問題

  1. 已知:一串字符。
  2. 未知:判斷它們是否構成回文。
  3. 關系:重新組裝。

2.定義變量

  • 定義兩個字符串變量 ins 和 outs。ins 用于存儲用戶輸入的字符序列,outs 用于存放反轉后的字符序列。
	//二、數據定義 string ins,outs;

3.輸入數據

  • 使用 getline(cin, ins, ‘.’) 從標準輸入接收字符直到遇到句點為止,并將這些字符存入 ins 中。
	//三、數據輸入 getline(cin,ins,'.');

4.數據計算

  • 通過一個從后向前遍歷 ins 的循環,逐個將 ins 中的字符添加到 outs 的末尾,這樣 outs 就會儲存 ins 的逆序字符串。
	//四、數據計算 for(int i=ins.length()-1;i>=0;i--){outs+=ins[i];}

5.輸出結果

  • 比較 ins 和 outs 是否相等,如果相等則輸出 “TRUE” 表示輸入的是回文,否則輸出 “FALSE” 表示不是回文。
  • 返回0表示程序執行成功且正常退出。
	//五、輸出結果 if(ins==outs){cout<<"TRUE";}else{cout<<"FALSE";}return 0;	

完整代碼如下:

#include <bits/stdc++.h> // 引入C++標準庫的所有頭文件(一般不推薦在實際項目中使用,應引入具體需要的頭文件)
using namespace std; // 使用std命名空間int main() {// 一、分析問題// 已知:我們有一個輸入字符串ins。// 未知:我們需要判斷這個字符串是否為回文(正讀和反讀相同)。// 關系:通過反轉輸入字符串并進行比較來確定。// 二、數據定義 string ins, outs; // 定義兩個字符串變量,ins用于存儲用戶輸入的字符序列,outs將用于存放ins的逆序字符串// 三、數據輸入 getline(cin, ins, '.'); // 從標準輸入接收字符,直到遇到句點(.)為止,并存入ins變量中// 四、數據計算 for (int i = ins.length() - 1; i >= 0; i--) { // 從ins的末尾開始向前遍歷每一個字符outs += ins[i]; // 將ins中的每個字符依次添加到outs字符串的末尾,從而實現逆轉操作}// 五、輸出結果 if (ins == outs) { // 比較原字符串ins與逆轉后的字符串outs是否相等cout << "TRUE"; // 如果相等,說明ins是回文字符串,輸出"TRUE"} else {cout << "FALSE"; // 否則,說明ins不是回文字符串,輸出"FALSE"}return 0; // 程序執行成功結束,返回值為0
}

問題四:1102 - 字符串中的空格移位

類型:字符串。


題目描述:

輸入一個字符串,將其中的所有空格都移到最前面,然后輸出。

輸入:

一個字符串。如:a□b□c(為了能看清空格,□代表一個空格,但實際測試數據中不用□表示空格)

輸出:

空格全部移到了串前的字符串。如:□□abc

樣例:

輸入:

a b c

輸出:

  abc

在這里插入圖片描述


1.分析問題

  1. 已知:一個字符串。
  2. 未知:空格全部移到了串前的字符串。
  3. 關系:字符重組。

2.定義變量

  • s 用于存儲用戶輸入的原始字符串,s1 用于存儲原字符串中的空格字符,s2 用于存儲原字符串中的非空格字符。
	//二、數據定義 string s,s1,s2;

3.輸入數據

  • 通過 getline(cin, s) 從標準輸入讀取一行字符串(包括空格)存入變量 s。
	//三、數據輸入 getline(cin,s);

4.數據計算

遍歷字符串 s 的每一個字符:

  • 如果當前字符是空格,則將其添加到字符串 s1 中。
  • 否則,將當前字符添加到字符串 s2 中。
	//四、數據計算 for(int i=0;i<s.length();i++){if(s[i]==' '){s1+=s[i];}else{s2+=s[i];}}

5.輸出結果

  • 遍歷完成后,將包含所有空格的字符串 s1 和包含所有非空格字符的字符串 s2 進行拼接,并輸出結果,此時空格已全部移動到了非空格字符的前面。
  • 程序執行完畢后返回0,表示程序正常結束。
	//五、輸出結果 cout<<s1+s2;return 0;

完整代碼如下:

#include<bits/stdc++.h>
using namespace std; // 使用std命名空間int main(){// 一、分析問題// 已知:一個字符串。// 未知:將原字符串中的所有空格移動到字符串前面的新字符串。// 關系:通過字符重組實現空格位置的改變。// 二、數據定義string s, s1, s2; // 定義三個字符串變量:// s 用于存儲用戶輸入的原始字符串,// s1 用于存儲原始字符串中的空格,// s2 用于存儲原始字符串中的非空格字符// 三、數據輸入getline(cin, s); // 從標準輸入讀取一行字符串,包括空格,存入變量s// 四、數據計算for(int i = 0; i < s.length(); i++){ // 遍歷字符串s中的每個字符if(s[i] == ' '){ // 當前字符是空格s1 += s[i]; // 將空格添加到s1中} else {s2 += s[i]; // 否則(當前字符為非空格字符),將其添加到s2中}}// 五、輸出結果cout << s1 + s2; // 輸出拼接后的字符串,此時所有空格都在非空格字符之前return 0; // 程序執行成功返回0
}

五、感謝

如若本文對您的學習或工作有所啟發和幫助,懇請您給予寶貴的支持——輕輕一點,為文章點贊;若覺得內容值得分享給更多朋友,歡迎轉發擴散;若認為此篇內容具有長期參考價值,敬請收藏以便隨時查閱。

每一次您的點贊、分享與收藏,都是對我持續創作和分享的熱情鼓勵,也是推動我不斷提供更多高質量內容的動力源泉。期待我們在下一篇文章中再次相遇,共同攀登知識的高峰!

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719104.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719104.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719104.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle基礎體系

一、 Oracle數據庫服務器 數據庫在各個行業都會有使用到&#xff1b;其實&#xff0c;我們平時無論是在與客戶溝通或者交流中&#xff0c;所說的Oracle數據庫是指Oracle數據庫服務器&#xff08;Oracle Server&#xff09;&#xff0c;它由Oracle實例&#xff08;Oracle Instan…

什么是杠桿?WeTrade眾匯這樣舉例,大家都明白

杠桿是投資交易者一定要知道的一個金融術語。那么什么是杠桿呢?下面WeTrade眾匯就用蘋果進行舉例&#xff0c;大家就都會明白&#xff0c;原來如此簡單。 發揮我們投資者的想象&#xff0c;我們現在要進行一場蘋果的買賣&#xff0c;能夠賺錢的本質就是高買低賣&#xff0c;所…

二十篇esp3454

jfjjfj from machine import I2C,Pin from ssd1306 import SSD1306_I2C i2c I2C(sdaPin(“Y8”), sclPin(“Y6”)) oled SSD1306_I2C(128, 64, i2c, addr0x3c) oled.text(“Hello World!”, 0, 0) oled.text(“MicroPython”, 0, 20) oled.text(“By 01Studio”, 0, 50) oled…

【在巴厘島學點印尼語】日常篇

BINTANG BIR 檳棠啤酒 今天不寫代碼&#xff0c;在巴厘島休養&#xff0c;順便聊點印尼語。 印尼語&#xff0c;Bahasa Indonesia&#xff0c;是印度尼西亞的官方語言&#xff0c;也即印尼化的馬來語廖內方言&#xff0c;其變種包括 爪哇語&#xff08;島民方言&#xff09; 等…

如何選擇適合電商的WordPress主題模板?

選擇適合電商的WordPress主題模板時&#xff0c;首先應考慮主題模板是否與WooCommerce兼容。WooCommerce是WordPress中一個強大的電商插件&#xff0c;能夠幫助用戶實現在線電子商務銷售或產品展示。因此&#xff0c;選擇一個與WooCommerce高度兼容的主題模板至關重要。 其次&…

5.測試教程 - 進階篇

文章目錄 1.按測試對像劃分1.1**界面測試**1.2**可靠性測試**1.3**容錯性測試**1.4**文檔測試**1.5**兼容性測試**1.6**易用性測試**1.7**安裝卸載測試**1.8**安全測試**1.9**性能測試**1.10**內存泄漏測試** 2.按是否查看代碼劃分2.1黑盒測試(Black-box Testing)2.2白盒測試(W…

部署kubernetes-dashboard改成http免密登錄

原始鏈接地址 https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改Service端口 增加80端口&#xff0c;改成http訪問 修改前: spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard修改后&#xff…

snakemake: 基本語法知識點

Snakemake 使用一種基于 Python 的語法來定義工作流&#xff0c;允許用戶編寫規則&#xff08;rules&#xff09;來指定數據分析流程中的各個步驟。以下是一些基礎語法知識點&#xff0c;幫助你理解和使用 Snakemake。 1. 規則&#xff08;Rules&#xff09; 規則是 Snakemak…

【ROS源碼閱讀】

項目需要研讀ROS源碼&#xff0c;這其中碰到的一些問題記錄一下&#xff1a; 源碼編譯過程 (1) 在ubuntu 18.04 上安裝ROS melodic的版本。 (2) 下載源碼&#xff0c; ROS源碼鏈接&#xff1a; https://github.com/ros/ros_comm/tree/melodic-devel/ros_comm(3) 編譯 例如想…

圖像增強預處理對于深度學習訓練的提高有幫助嗎?

答案&#xff1a;圖像增強預處理對于深度學習訓練非常有幫助&#xff0c;它可以顯著提高模型的性能和泛化能力。 圖像增強包括許多技術&#xff0c;可以通過各種方法改進圖像數據&#xff0c;使其更適合訓練深度學習模型。 可以增加數據集的多樣性&#xff0c;減少模型對特定圖…

書生浦語全鏈路開源體系

推薦閱讀論文 A Survey Of Large Language Models 書生浦語開源的模型 從模型到應用 書生浦語開源體系 書生萬卷開源數據集 除此之外還有OpenDataLab國內數據集下載網站。 預訓練框架InterLM-Train 微調框架XTuner 評測工具體系 國內外常見的大語言模型評測基準&#xff1a…

【JS 算法題: 將 json 轉換為字符串】

題目簡介 其實就是手撕 JSON.stringfy()。 算法實現 輸入 原則上來說&#xff0c;輸入的是一個 json 對象。但需要考慮到異常情況&#xff0c;即輸入了其它類型的數據&#xff0c;比如&#xff1a;12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。 輸出 …

【比較mybatis、lazy、sqltoy、mybatis-flex、easy-query操作數據】操作批量新增、分頁查詢(三)

orm框架使用性能比較 比較mybatis、lazy、sqltoy、mybatis-flex、easy-query操作數據 環境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0測試條件常規對象 orm 框架是否支持xml是否支持 Lambda對比版本mybatis????3.5.4sqltoy????5.2.98lazy????1.2.4…

鴻蒙實戰項目開發:【短信服務】

概述 本示例展示了電話服務中發送短信的功能。 樣例展示 涉及OpenHarmony技術特性 網絡通信 難度級別 中級 基礎信息 使用ohos.telephony.sms接口展示了電話服務中發送短信的功能。 效果預覽 新建聯系人首頁短信頁 使用說明&#xff1a; 首頁點擊創建聯系人&am…

每日一練:LeeCode-203. 移除鏈表元素 【鏈表+虛擬頭結點】

每日一練&#xff1a;LeeCode-203. 移除鏈表元素 【鏈表虛擬頭結點】 思路設置虛擬頭結點 本文是力扣 每日一練&#xff1a;LeeCode-203. 移除鏈表元素 【鏈表虛擬頭結點】 學習與理解過程&#xff0c;本文僅做學習之用&#xff0c;對本題感興趣的小伙伴可以出門左拐LeeCode-20…

自然語言處理(NLP)中NER如何從JSON數據中提取實體詞的有效信息

專欄集錦&#xff0c;大佬們可以收藏以備不時之需&#xff1a; Spring Cloud 專欄&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 專欄&#xff1a;http://t.csdnimg.cn/hMwPR Redis 專欄&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 專欄&#xff1a;http://t.csdni…

Nginx 和Tomcat比較

Nginx和Tomcat是兩種不同的技術&#xff0c;它們在應用場景、性能、動態處理能力等方面有所區別&#xff1a; 應用場景 Nginx通常用作靜態內容服務器或代理服務器&#xff0c;可以將外部請求轉發給其他應用服務器&#xff0c;如Tomcat、Django等。而Tomcat則主要用作應用服…

機器學習-面經(part3)

5. 正則化 5.0 手推L1,L2 5.1 什么是正則化,如何理解 定義: 在損失函數后加上一個正則化項(懲罰項),其實就是常說的結構風險最小化策略,即損失函數 加上正則化。一般模型越復雜,正則化值越大。 正則化項是用來對模型中某些參數進行約束,正則化的一般形式如下: 第一項是…

固件和內核驅動

驅動折騰小記 很多人更新了內核&#xff0c;但是自己的外設依然沒有驅動&#xff0c;是因為僅僅更新內核是不夠的&#xff0c;還需要更新固件。 什么是固件&#xff1f; 在許多設備能夠與操作系統通信之前&#xff0c;它們必須首先使用設備制造商提供的“固件”進行初始化。…

實施工程師常遇技術問題

文章目錄 一、對與一個項目&#xff0c;你認為項目的里程碑有哪幾個&#xff1f;二、Tomcat服務器與Resin服務器的區別2.1、開發商和許可證&#xff1a;2.2、部署和配置&#xff1a;2.3、功能和擴展性&#xff1a;2.4、社區和生態系統&#xff1a; 三、版本控制工具SVN與Git的區…