LeetCode:二进制求和【67】
题目描述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1"输出: "100"
示例 2:
输入: a = "1010", b = "1011"输出: "10101"
题目分析
分三部分分别运算、考虑进位值:
Java题解
class Solution { public String addBinary(String a, String b) { int ptrA = a.length()-1; int ptrB = b.length()-1; int jwz = 0; String sum = ""; while(ptrA>=0&&ptrB>=0) { int val = (a.charAt(ptrA)-'0')+(b.charAt(ptrB)-'0')+jwz; if(val==2){ sum="0"+sum; jwz=1; } else if(val==3) { sum="1"+sum; jwz=1; } else{ sum=val+sum; jwz=0; } ptrA--; ptrB--; } while(ptrA>=0){ int val = (a.charAt(ptrA--)-'0')+jwz; if(val==2) { sum="0"+sum; jwz=1; } else{ sum=val+sum; jwz=0; } } while(ptrB>=0){ int val = (b.charAt(ptrB--)-'0')+jwz; if(val==2) { sum="0"+sum; jwz=1; } else{ sum=val+sum; jwz=0; } } if(jwz==1) sum='1'+sum; return sum; }}