要找改哪个区间最大,肯定是越左边越好,所以从左边开始找到第一个0即可
确定了左端点,直接从左端点开始往后走,把这个区间的0都走完,改成1。
c++实现
class Solution {
public:
string maxLexicographical(string num) {
// write code here
int len = num.size(), i;
for(i=0; i<len; i++){
if(num[i] == '0') break; //确定左端点
}
while(num[i] == '0'){ //从左端点开始往后改,直到遇到1为止
num[i] = '1';
i++;
}
return num;
}
};
python实现
class Solution:
def maxLexicographical(self , num):
# write code here
i=0
while i < len(num):
if num[i] == '0':
break
i+=1
j=0
while i<len(num) and num[i] == '0':
i+=1
j+=1
result = num.replace('0', '1', j)
return result