1 条题解

  • 0
    @ 2026-6-19 10:30:26

    📝 题目大意

    给定一个仅由 01 组成的字符串 ss,将每个字符取反(0110)后输出。

    💡 解题思路

    1. 题目分析:字符串长度在 111010 之间,数据量极小,直接模拟即可。每个字符只有两种可能,逻辑非常简单。
    2. 算法推导:读入字符串 ss,遍历每个字符 s[i]s[i]
      • s[i]=’0’s[i] = \texttt{'0'},输出 ’1’\texttt{'1'}
      • 否则(即 s[i]=’1’s[i] = \texttt{'1'}),输出 ’0’\texttt{'0'}。 无需存储结果,直接边遍历边输出,节省空间。
    3. 边界与细节:无特殊边界情况。字符串由题目保证仅含 01,不需要额外判断非法字符。

    ⏱️ 复杂度分析

    • 时间复杂度O(n)O(n),其中 nn 为字符串长度,每个字符处理一次。
    • 空间复杂度O(1)O(1),仅使用输入字符串的存储空间(也可视为 O(n)O(n)),无额外辅助数组。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int main(){
      cin >> s;                     // 读入 01 字符串
      int n = s.size();             // 获取字符串长度
      for (int i = 0; i < n; i++) { // 遍历每个字符
        if (s[i] == '0')            // 若当前字符为 '0'
          cout << "1";              // 输出 '1'
        else                        // 否则当前字符为 '1'
          cout << "0";              // 输出 '0'
      }
      return 0;
    }
    
    • 1

    信息

    ID
    681
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者