题目描述
输入一行字符串,计算其中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的个数。要注意字符数字之间的转化及表示方法。