LeetCode—67. Add Binary
题目
https://leetcode.com/problems/add-binary/description/
给两个二进制的字符串,将两者转为二进制后相加,返回和的字符串。
思路及解法
要注意两点:
1.两个字符串有可能不是等长的,这样在相加时就可能出现空指针的问题,所以首先要把较短的字符串左端补零,将两个字符串补位等长。
2.字符串charAt操作是从字符串的最左端开始操作的,也就是二进制的最高位,所以相加完成后不要忘记reverse
代码
class Solution {
public String addBinary(String a, String b) {
int aLen=a.length(), bLen=b.length();
int maxLen = Math.max(aLen, bLen);
int tempA, tempB;
int carry=0, val=0;
StringBuffer sb = new StringBuffer();
for(int i=0; i<maxLen; i++){
tempA = aLen>i ? a.charAt(aLen-i-1)-'0' : 0;
tempB = bLen>i ? b.charAt(bLen-i-1)-'0' : 0;
val = (tempA + tempB + carry) % 2;
carry = (tempA + tempB + carry) / 2;
sb.append(val + "");
}
return (carry==1) ? "1"+sb.reverse() : sb.reverse().toString();
}
}