LeetCode 1702. 修改后的最大二进制字符串

思路

方法:找规律

 1 class Solution {
 2 public:
 3     string maximumBinaryString(string binary) {
 4         int n = binary.length();
 5         int firstZeroIndex = -1;
 6         for(int i = 0; i < n; ++i) {
 7             if(binary[i] == '0') {
 8                 firstZeroIndex = i; //找到第一个0的位置
 9                 break;
10             }
11         }
12 
13         //全是1,没有0的情况
14         if(firstZeroIndex == -1) {
15             return binary;
16         }
17 
18         //找到后面1的个数
19         int cnt = 0;
20         for(int i = firstZeroIndex+1; i < n; ++i) {
21             if(binary[i] == '1') {
22                 cnt++;
23             }
24         }
25 
26         string res(n, '1');
27         //得到最后答案中`0`所在的位置
28         res[n-cnt-1] = '0';
29 
30         return res;
31     }
32 };

复杂度分析:

时间复杂度:O(n)
空间复杂度:O(1)

本篇题解转载自:

C++ 一次循环 详细分析过程

原文地址:https://www.cnblogs.com/FengZeng666/p/14530055.html