字母统计

401 阅读1分钟

题目描述

输入一行字符串,计算其中A-Z大写字母出现的次数。

输入描述:

案例可能有多组,每个案例输入为一行字符串。

输出描述:

对每个案例按A-Z的顺序输出其中大写字母出现的次数。

示例

输入
DFJEIWFNQLEF0395823048+_+JDLSFJDLSJFKK
输出
A:0
B:0
C:0
D:3
E:2
F:5
G:0
H:0
I:1
J:4
K:2
L:3
M:0
N:1
O:0
P:0
Q:1
R:0
S:2
T:0
U:0
V:0
W:1
X:0
Y:0
Z:0

思路

  • 巧用数组cnt来存放A-Z字母的出现次数,用下标i来表示A-Z字母,用cnt[i]来表示每个字母出现的次数。

  • 首先循环数组0-26下标,并将其所代表的值将其置0。

  • 其次循环字符串中每个字符,判断是否在A-Z中,若是,则相应下标对应的值++。

  • 最后输出下标i和对应的值cnt[i],记得将数字转回字符i。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	cin>>s;
	int cnt[27]; //存放字母个数的数组 
	int ls = s.size();
	for(int i=0; i<26; i++){ //将数组全部置0 
		cnt[i]=0;
	}
	for(int i=0; i<ls; i++){
		if(s[i]>='A' && s[i]<='Z') //判断字符是否在A-Z中 
			cnt[s[i]-'A']++; //若在范围,相应数组下标所对应的值++ 
	} 
	for(int i=0; i<26; i++){
		printf("%c:%d\n",i+'A',cnt[i]);
	}
	return 0;
}

小结

巧妙的利用数组,来存储A-Z的个数。要注意字符数字之间的转化及表示方法。