top1编程
← 返回题目
题解

数字游戏

1 条题解

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

    解题思路

    小 K 发来一个由 0 和 1 组成的 01 字符串,小 P 要数一数里面有多少个 1。

    可以把 01 字符串想象成一排小灯泡:1 是亮着的灯泡,0 是灭着的灯泡。我们要数一数亮着的灯泡有几个。

    做法非常简单:

    1. 把整个字符串读进来;
    2. 从第一个字符开始,一个一个看;
    3. 看到 1 就把计数器加 1,看到 0 就跳过;
    4. 最后把计数器的值输出。

    注意:01 串里只有 0 和 1,没有空格,所以用普通的 cin >> s 读入就可以了。

    参考代码

    // 数字游戏:统计长度为8的01字符串中字符1的个数
    #include <iostream>
    using namespace std;
    int main(){
        string s;
        cin>>s; // 01串不含空格,直接cin读入
        int cnt=0; // cnt记录1的个数
        int n=s.size(); // n记录字符串长度
        for(int i=0;i<n;i++){
            if(s[i]=='1') cnt++; // 是字符1就计数
        }
        cout<<cnt<<endl;
        return 0;
    }
    

    复杂度分析

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