5 条题解
-
4
解析
用cnt[i]表示26个英文字母出现的次数。
因为输出的时候,数字之间需要用逗号隔开,所以可以先输出cnt[0],再输出cnt[1]~cnt[25]。
题解
#include <string> #include <iostream> using namespace std; int cnt[26]; int main() { string s; cin >> s; for (int i = 0; i < s.length(); i++) if (s[i] >= 'a' && s[i] <= 'z') cnt[s[i] - 'a']++; cout << cnt[0]; for (int i = 1; i < 26; i++) cout << "," << cnt[i]; return 0; }
-
-2
思路:
我们可以用一个一维数组(cnt)结合下标去存储a-z分别出现了几次
也就是说,a对应0,b对应1,……,z对应25
把a到z转化为1到25,可以通过把每个字母-'a'实现
知道这些以后来写代码,先用一个string类型的变量(s)存储字符串,获取长度以后遍历s,判断s是不是小写字母,如果是,cnt中与这个字母对应的下标所对应的数+1(cnt[s[i] - 'a']++)
统计完以后输出,输出时要注意最后不能有',',有两种处理方法
1、先输出cnt[0],然后遍历cnt[2到25],输出cnt[i]和','
2、判断这是不是最后一个,如果是,输出cnt[i],否则输出cnt[i]和','
#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int l = s.length(),cnt[30] = {0}; for(int i = 0;i < l;i++) { if(!((s[i] >= '1' && s[i] <= '9') || (s[i] >= 'A' && s[i] <= 'Z'))) cnt[s[i] - 'a']++; } for(int i = 0;i < 26;i++) { if(i == 25) cout << cnt[i]; else cout << cnt[i] << ','; } return 0; }
-
-3
#include <iostream> #include <cstring> using namespace std; int t[30]; int main() { char s[1005]; cin>>s; for (int i=(int)'a';i<=(int)'z';i++) { for (int a=0;a<=(int)strlen(s)-1;a++) { if (s[a]==(char)i) t[i-96]+=1; } } for (int i=1;i<=26;i++) { cout<<t[i]; if (i!=26) cout<<","; } return 0; }
-
-3
#include<bits/stdc++.h> using namespace std; int flag[26]; int main() { char a[1005]; cin >> a + 1; int n=strlen(a + 1); for (int i=1;i<=n;i++) { if (a[i]>='a' && a[i]<='z') { flag[a[i]-'a'+1]++; } } for (int i=1;i<=26;i++) { if (i==26)//输出z字母出现次数时不要带逗号 { cout<<flag[i]; } else { cout<<flag[i]<<","; } } return 0; }
- 1
信息
- ID
- 296
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 2342
- 已通过
- 606
- 上传者