1. 程式人生 > >《華為機試線上訓練》之計算字元個數

《華為機試線上訓練》之計算字元個數

寫出一個程式,接受一個有字母和數字以及空格組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。


輸入描述:

輸入一個有字母和數字以及空格組成的字串,和一個字元。



輸出描述:

輸出輸入字串中含有該字元的個數。


輸入例子:
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;
    
}