《華為機試線上訓練》之計算字元個數
阿新 • • 發佈:2019-02-06
寫出一個程式,接受一個有字母和數字以及空格組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。
輸入描述:
輸入一個有字母和數字以及空格組成的字串,和一個字元。
輸出描述:
輸出輸入字串中含有該字元的個數。
輸入例子:
ABCDEF A
輸出例子:
1
解題思路:第一反應就是可以把所有的字母輸入都轉為小寫字母,或者所有的字母輸入都轉換為大寫字母,簡單直接,可能執行效率不是最好的,但是演算法的思路挺簡單的,兩個迴圈就可以搞定,那麼怎麼實現這個字母轉換呢。
這裡我提供兩種方法:
方法一就是判斷所有的字母是否為A到Z之間的,如果是就直接加上'a'-'A',其實就是加上32,使其轉換為大寫字母,因為我們都知道小寫字母的ASCII值比大寫字母的大32。如程式中方法一所示的程式碼。
方法二直接使用string函式庫中的處理函式tolower()函式直接處理,簡單直接,如程式碼中的方法二的註釋。
程式碼如下:
#include <iostream> #include <string> using namespace std; int main() { string str1; char str2; getline(cin,str1); cin>>str2; int i, count=0; for(i=0;i<str1.length();i++) { //=============方法二============= // str1[i] = tolower(str1[i]); //=============方法一============= if(str1[i]>='A'&&str1[i]<='Z') str1[i]+=('a'-'A'); else continue; } for(i=0;i<str1.length();i++) { if(str1[i]==str2) count++; } cout << count; return 0; }