gpt4 book ai didi

c++ - 计算字符串 C++ 中每个字母的频率的最有效方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:51:20 24 4
gpt4 key购买 nike

我被要求做一个任务来计算字符串中每个字母出现的次数。假定所有字符都是按字母顺序排列的小写英文字母。此外,我应该按升序输出字符串字母,以及每个字母的出现频率。我尝试使用 std::set 来实现,如下面的代码:

#include <iostream>
#include <set>
#include <string>

int main() {
std::string s;
std::cin >> s;
int cnt[26] = {};

for (int i = 0; i < s.length(); i++) {
cnt[s[i] - 'a']++;
}
std::set <char> st;
for (int i = 0; i < s.length(); i++) {
st.insert(s[i]);
}
for (auto x : st) {
std::cout << x << " : " << cnt[x - 'a'] << std::endl;
}

return 0;
}

最佳答案

你可以省略std::set,这样写

int main() {
std::string s;
std::cin >> s;
int cnt[26] = {};

for (int i = 0; i < s.length(); i++) {
cnt[s[i] - 'a']++;
}
for (int i = 0; i < 26; ++i)
if (cnt[i] > 0)
std::cout << (char)('a' + i) << " : " << cnt[i] << std::endl;

return 0;
}

我们不是保存在 std::set 中,而是检查 cnt 中是否存在字符,如果是符号则输出。
此选项占用的内存较少。

关于c++ - 计算字符串 C++ 中每个字母的频率的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com