top1编程
← 返回题目
题解

座右铭

1 条题解

  • 0
    @ 2026-8-5 14:38:11

    解题思路

    小童找到了一句励志的座右铭,要数一数这句座右铭去掉空格后有多少个字符。

    这就像数一袋糖果:袋子里有各种颜色的糖果(字符),其中有些是"空气糖果"(空格)不算数,我们要数的是真正能吃的糖果有多少颗。

    关键点有两个:

    1. 读整行:句子里有空格,如果还用 cin >> s,读到空格就停了。要用 getline(cin, s) 把一整行(包括空格)都读进来。
    2. 跳过空格:从第一个字符检查到最后一个字符,只要遇到的不是空格,就计数 +1。

    举个简单的例子:never give up! 里有空格,去掉空格后是 nevergiveup!,一共 12 个字符,答案就是 12。

    参考代码

    // 座右铭:统计字符串中不含空格的字符个数
    #include <iostream>
    using namespace std;
    int main(){
        string s;
        getline(cin,s); // 读整行,这样才能包含空格
        int cnt=0;      // cnt记录字符个数
        int n=s.size(); // n记录字符串长度
        for(int i=0;i<n;i++){
            if(s[i]!=' ') cnt++; // 只要不是空格就计数
        }
        cout<<cnt<<endl;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:只需要从头到尾扫一遍字符串,长度是 n,所以是 O(n)。
    • 空间复杂度:只用一个计数变量,是 O(1)。
    • 1