看到一道面试题目:要求统计字符串中相同字符的个数,大写字母算小写字母来统计。例如: 输入字符串 bbBCcaA* ,输出*:1 a:2 b:3 c:2
代码如下:
Code
#include<iostream>
using namespace std;
const int MAX_NUMBER=200;
//统计相同字符个数
void Calc(const char *str,int len);
int main()
{
char pch[MAX_NUMBER];
//输入字符串
cin.getline(pch,MAX_NUMBER);
int length=strlen(pch);
Calc(pch,length);
return 0;
}
void Calc(const char *str,int len)
{
int LetterCounts[256]; //这个数组是关键,它存放着所以西文字符的个数
int i;
for( i = 0 ; i < 256 ; i++)
LetterCounts[i]=0;
for( i = 0 ; i < len ; i++)
{
if ( str[i] >= 'A' && str[i] <= 'Z')
LetterCounts[str[i]+32]++; //大写做小写处理
else
LetterCounts[str[i]]++;
}
for ( i=0 ; i < 256 ; i++)
{
if (LetterCounts[i] > 0)
cout<<(char)i<<":"<<LetterCounts[i]<<endl;
}
}