📅  最后修改于: 2023-12-03 15:42:21.694000             🧑  作者: Mango
这是一道经典的编程题,适合考验程序员的基本能力和算法思维。
有一段英文短文,请编写一个程序,统计其中每个字母出现的次数,并按照字母表顺序输出结果,如果字母没有出现过,则不输出。
输入的数据为一段英文短文,其中可能包含空格、标点符号和大小写不同的字母。
输出每个字母在短文中出现的次数,按照字母表顺序输出,如果字母没有出现过,则不输出。
输出格式如下:
a:10
b:5
c:3
...
This is a sample text with several words in it.
a:2
c:1
d:1
e:7
f:1
h:1
i:4
l:2
m:1
n:2
p:1
r:2
s:3
t:6
v:1
w:2
x:1
可以使用哈希表来统计每个字母出现的次数,然后按照字母表顺序输出结果。
具体步骤如下:
from collections import defaultdict
text = input().lower()
counter = defaultdict(int)
for c in text:
if c.isalpha():
counter[c] += 1
for c in sorted(counter.keys()):
print(c + ":" + str(counter[c]))
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
string text;
getline(cin, text);
map<char, int> counter;
for (char c : text) {
if (isalpha(c)) {
c = tolower(c);
counter[c]++;
}
}
for (char c = 'a'; c <= 'z'; c++) {
if (counter[c] > 0) {
cout << c << ":" << counter[c] << endl;
}
}
return 0;
}
此题考察了程序员的字符串处理和数据结构处理能力,需要掌握哈希表和字母表的相关知识。同时,需要注意边界处理,如字符大小写转换、字母表范围限制等。