输入一个字符串,求出这个字符串中最多的那个字符。题目中值限定是小写字符。
思路:可采用类似于哈希表的方式来统计,表中存的数据就是对应字符出现的频率。具体看代码,有注释。
int main()
{
int max = 256;//输入的字符串的最大长度;
char str[max];//保存输入的字符串
int count[26]={0};//利用数组建立哈希表,数组的小标对应于'a'-'z'
cin>>str;//输入字符串
int len =strlen(str);//求出输入字符串的长度
for(int i=0;i<len;i++)
{
if(str[i>='a'&&str[i]<='z'])//输入类型检查,保证字符'a'-'z'
{//
count[str[i]-'a']++;//字符是与数组对应下标有个线性关系
}
}
int temp=0;
for(int i=1; i<26; i++)
{//求出哈希表中数值最大的那个位置,这个位置对应字符最多的字符
if(count[i]>count[temp])
temp = i;
}
char chr = (char)('a'+temp);//类型转换求出相应的字符
cout<<chr<<endl;
return 0;
}