top1编程
← 返回题目
题解

统计字母出现的概率

1 条题解

  • 0
    @ 2026-8-5 10:15:42

    解题思路

    概率就是“出现的次数占总数的比例”。先数出指定字母在字符串里出现了几次,再除以字符串总长度,最后乘 100% 变成百分比。

    做法:

    1. 读入指定字符 ch 和字符串 s;
    2. 从头到尾扫一遍,遇到和 ch 一样的字符,计数器 cnt 加 1;
    3. 概率 = 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