Java 二进制字符串取反再加1代码
时间: 2023-12-31 13:04:06 浏览: 250
以下是Java实现二进制字符串取反再加1的代码:
```
public static String invertBinaryStr(String str) {
if (str == null || str.length() == 0) {
return str;
}
int n = str.length();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
if (str.charAt(i) == '0') {
sb.append('1');
} else {
sb.append('0');
}
}
String inverted = sb.toString();
int carry = 1;
sb.setLength(0);
for (int i = n - 1; i >= 0; i--) {
int sum = (inverted.charAt(i) - '0') + carry;
carry = sum / 2;
sb.append(sum % 2);
}
if (carry == 1) {
sb.append('1');
}
return sb.reverse().toString();
}
```
输入一个二进制字符串,先将其中的每一位取反,然后再从末位开始加1,并且在遇到进位时继续向前加。最后再将得到的数字翻转回来,即为最终结果。
例如,输入"11010101",则通过取反得到"00101010",加1后得到"00101011",翻转回来即为"11010100"。
阅读全文