解题思路
创建一个长度为26的数组count,代表26个英文字母出现的次数,并把数据初始化为0。遍历字符串拿到里面的每一个字符,其中 字符 - 'a' 就是该字符在count里对应的下标。最后遍历count,输出每一个不为0的元素和该位置对应的字符。
代码实现
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
string s;
cin>>s;
// count用来统计26个英文字母出现的次数
vector<int> count(26);
// 1、遍历字符串,把各个字符出现的次数映射到count中
for(auto& e : s)
{
++count[e - 'a'];
}
// 2、遍历count数组并叠加字符ch,打印归一化后的结果
char ch='a';
for(auto& e : count)
{
if(e)
{
cout<<ch<<e;
}
++ch;
}
cout<<endl;
return 0;
} 性能分析
- 时间复杂度:O(n)。其中n为字符串的长度。
- 空间复杂度:O(1)。只创建有限大小的数组count。

京公网安备 11010502036488号