题解 | 2、【C++】字符串归一化

字符串归一化

http://www.nowcoder.com/questionTerminal/6d5e036defdf408681376a4a9d4930ff

解题思路

创建一个长度为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。
全部评论

相关推荐

勤奋努力的椰子这就开摆:这些经历跟硬件都没啥关系呀
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-08 19:53
已编辑
AAA不喝拿铁:海投吧,感觉项目写的可以了,能cover住提问就行。我根据真实面经整理得到的最全(高/中/低频)面试题,适合面试前短期突击&长期提高补充,需要的牛u可以关注一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务