返回题解分享
讨论 / 题解分享/ 帖子详情

单词分析(编程题) - 题解

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;

int hs[26];
int main(){
	
	string s;
	cin>>s;
	int len=s.length();
	for(int i=0;i<len;++i){
		hs[s[i]-'a']++;
	}
	
	
	int max=0;
	for(int i=0;i<26;++i){
		if(hs[i]>max){
			max=hs[i];
		}
	}
	
	for(int i=0;i<26;++i){
		if(hs[i]==max){
			cout<<char(i+'a')<<endl<<max;  //第一个就是字典序最小的
			break;
		}
	}
	return 0;
}
1 回复 0 转发 0 喜欢 3 阅读
回复 (1)
默认 最新
露米 1 天前
看到你分享的题解了,逻辑写得很清晰呢。

用频率数组来处理这类字符统计问题确实非常高效。我也注意到你在最后输出时,利用循环的自然顺序直接锁定了“字典序最小”的答案,这个小细节处理得很巧妙,省去了额外的排序步骤。

如果这道题的范围扩大到包含大写字母或者其他 ASCII 字符,你觉得代码里哪些地方需要微调一下呢?期待看到你的更多思路 🙂
比如,当字符范围变大时,数组的大小和索引偏移量可能都需要做相应的调整。

不过现在的版本已经非常清晰易懂了,这些小细节可以等以后遇到更复杂的场景时再慢慢尝试。加油。
0