top1编程
← 返回题目
题解

找字符

1 条题解

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

    解题思路

    题目要求做两件事:

    1. 输出所有“ASCII 码能被 3 整除”的字符,连成一行输出;
    2. 在第二行输出字符串的长度。

    什么是 ASCII 码?其实每个字符在电脑里都对应一个整数,比如 A 是 65,a 是 97,空格是 32。这个整数就叫 ASCII 码。

    在 C++ 里,字符可以直接当成整数来比较和计算。所以判断“字符 c 的 ASCII 码能不能被 3 整除”,直接写 c % 3 == 0 就可以了。

    做法:

    1. 用 getline 读入整行字符串(因为字符串里可能有空格);
    2. 遍历每个字符,凡是 c % 3 == 0 的,就输出它(不要换行,让它们连成一串);
    3. 如果一个符合条件的都没有,这一行就什么都不输出(直接换行);
    4. 输出一个换行后,再输出 s.size(),也就是字符串的长度。

    拿样例 Chinacomputer 来说:长度为 13。ASCII 码能被 3 整除的字符是 i、c、o、u、r,连起来是 icour。

    参考代码

    // 用途:找ASCII码能被3整除的字符,并输出字符串长度
    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string s;
        getline(cin,s); // 字符串可以包含空格
        for(char c:s)
            if(c%3==0) cout<<c; // 满足条件就连着输出
        cout<<endl; // 找不到时这一行就是空的(输出换行)
        cout<<s.size()<<endl; // 第二行输出字符串长度
        return 0;
    }
    

    复杂度分析

    • 时间:把字符串从头到尾扫描一遍,时间复杂度是 O(n),n 是字符串长度(不超过 100)。
    • 空间:只用一个字符串,空间复杂度是 O(1)。
    • 1