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)
本篇题解转载自: