LeetCode:二進位制求和【67】
阿新 • • 發佈:2018-11-10
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; } }