题解 | #二进制取反#
二进制取反
http://www.nowcoder.com/practice/4ca47baf4d5f4417afc0f99d6efc7d42
使用两个变量,一个判断是否是第一次遇到连续的‘0’,是的话就加入1,不是就加入原数字,当遇到‘0’之后再遇到‘1’,就改变另一个变量使之后不会再处理‘0’。
import java.util.*;
public class Solution {
public String maxLexicographical (String num) {
StringBuilder res = new StringBuilder();
int flag0 = 1, flag1 = 0;
for(Character c:num.toCharArray()){
// 如果是第一次遇到0
if(flag0 == 1 && c == '0'){
res.append('1');
flag1 = 1;
}else{
res.append(c);
// 如果已经遇到过0了
if(flag1 == 1)flag0 = 0;
}
}
return res.toString();
}
}