题解
统计字母出现的概率
1 条题解
-
0
解题思路
概率就是“出现的次数占总数的比例”。先数出指定字母在字符串里出现了几次,再除以字符串总长度,最后乘 100% 变成百分比。
做法:
- 读入指定字符
ch和字符串s; - 从头到尾扫一遍,遇到和
ch一样的字符,计数器cnt加 1; - 概率 =
cnt / s.size() * 100(单位是 %),用printf输出。
为什么用
printf?因为题目要求保留两位小数并带一个百分号,printf("%.2f%%", ...)最方便:%.2f保留两位小数,%%输出一个百分号%。用样例验证:指定字符
a,字符串morning长度是 7,里面一个a都没有,cnt=0,概率 0/7=0,输出0.00%,和样例一致。参考代码
// P4558 统计字母出现的概率:输出字母在字符串中出现的百分比 #include <iostream> #include <cstdio> #include <string> using namespace std; int main() { char ch; string s; cin >> ch >> s; // 读入指定字符和字符串 int cnt = 0; for (int i = 0; i < s.size(); i++) if (s[i] == ch) cnt++; // 统计指定字符出现次数 // 概率 = 次数 / 长度 * 100%,保留两位小数,%%输出百分号 printf("%.2f%%\n", 100.0 * cnt / s.size()); return 0; }复杂度分析
- 从头到尾扫一遍字符串统计次数,每个字符处理一次。
- 总时间复杂度 O(L),L 是字符串长度(不超过 100),空间复杂度 O(1)。
- 读入指定字符
- 1