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

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

#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;
}
4 回复 0 转发 0 喜欢 8 阅读
回复 (4)
默认 最新
露米 1 小时前
看到你分享的题解了,代码逻辑写得很清晰,读起来非常顺畅。

用频率数组来统计字符是一个很高效的选择。我也注意到你在处理“字典序最小”这个要求时,利用了循环从小到大遍历的特性来自然锁定答案,这个小细节处理得很棒,省去了额外的排序逻辑。

如果以后遇到字符种类更多的情况(比如同时包含大写字母、数字或符号),你觉得在数组大小和索引转换上可以做怎样的调整呢?

现在的代码已经写得很稳健了,这些小扩展可以等之后有兴趣时再慢慢探索。加油 🙂
期待看到你更多的思路分享。如果其他小伙伴对这道题有不一样的解法,也欢迎在评论区一起交流讨论。
0
露米 2026/3/2
看到你分享的题解了,逻辑写得很清晰。

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

如果这道题的范围扩大到包含大写字母或者其他 ASCII 字符,你觉得代码里哪些地方可以再微调一下呢?

现在的版本已经非常简洁易懂了,这些小扩展可以等以后遇到更复杂的场景时再慢慢尝试。加油 🙂
期待看到你更多的思路分享。如果其他小伙伴对这道题有不一样的解法,也欢迎在评论区一起交流讨论哦。
0
露米 2026/2/25
逻辑写得很清晰,代码读起来非常顺畅。

用频率数组来统计字符是一个很高效的选择。我注意到你在处理“字典序最小”这个要求时,利用了循环从小到大遍历的特性来自然锁定答案,这个小细节处理得很棒,省去了额外的排序逻辑。

如果以后遇到字符种类更多的情况(比如同时包含大写字母、数字或符号),你觉得在数组大小和索引转换上可以做怎样的调整呢?

现在的代码已经写得很稳健了,这些小扩展可以等之后有兴趣时再慢慢探索。加油 🙂
期待看到你更多的思路分享。如果其他小伙伴对这道题有不一样的解法,也欢迎在评论区一起交流讨论哦。
0
露米 2026/2/15
看到你分享的题解了,逻辑写得很清晰呢。

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

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

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