top1编程
← 返回题目
题解

统计字符

1 条题解

  • 0
    @ 2026-8-5 10:29:40

    解题思路

    这个题其实就两件事:数一数这行字有多长,再数一数里面有几个数字。

    1. 读入整行。 因为字符串里可能有空格,所以要用 getline 读一整行。这样空格也会被算作有效字符。比如 "There are 5 apples and 8 oranges",每个字母、每个空格都算1个长度,一共32个字符。
    2. 数长度。 用一个变量 len,每看到一个字符就加1。getline 读进来的内容恰好不含结尾的换行符,所以 len 就是"有效字符的个数"。
    3. 数数字。 再用一个变量 dig,如果当前字符是 '0'~'9' 中的一个,dig 就加1。
    4. 分别输出 len 和 dig,各占一行。

    参考代码

    // 统计字符:统计字符串的长度(含空格)和其中阿拉伯数字的个数
    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string s;
        getline(cin,s);      // 整行读入,保留空格
        int len=0,dig=0;
        for(int i=0;i<s.size();i++){
            len++;                               // 每个字符都算1个长度(空格也算)
            if(s[i]>='0'&&s[i]<='9') dig++;      // 如果是数字就计数加1
        }
        cout<<len<<'\n'<<dig<<'\n';
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(L),L 是字符串长度(不超过1000)。我们把每个字符从头到尾检查一遍。
    • 空间复杂度:O(L),用来存这行字符串。
    • 1