题目
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题意:
给定两个二进制字符串,然后返回他们的和(也为字符串形式)。
分析及解答
- 【统一形式】非常重要的技巧,经过这种统一处理,使得代码处理更简洁。
- 双指针(两个指针分别指向两个字符串)
- 字符,数字转换
public class Solution {
public String addBinary(String a, String b) {
char[] A = a.toCharArray();
char[] B = b.toCharArray();
StringBuilder sb = new StringBuilder();
int highA = a.length() -1;
int highB = b.length() -1;
int pre = 0;
int numberA = 0;
int numberB = 0;
int bitResult = 0;
//关键代码: 统一形式处理。
while(highA >= 0 || highB >= 0 || pre >0){
numberA = highA >=0 ? (A[highA] - '0'):0; //统一形式
numberB = highB >= 0 ? (B[highB] - '0'):0;
highA --;
highB --;
bitResult = numberA + numberB + pre;
if(bitResult == 0){
sb.append('0');
pre = 0;
}else if(bitResult == 1){
sb.append('1');
pre = 0;
}else if(bitResult == 2){
sb.append('0');
pre = 1;
}else{
sb.append('1');
pre = 1;
}
}
return sb.reverse().toString();
}
}