67、二进制求和
描述:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。
解法1:比较粗暴的方法,先找到较短的字符串,从右网左扫描。对应依次相加(**注意字符转整形 -‘0’!)后插入到StringBuilder的头中,分三种情况:《=1就直接存到StringBuilder ,不进位。等于2时,replace头为0,同时进位。等于3时,replace头为1,同时进位。循环次数为短的字符串长度,循环结束则只剩较长的字符串,依次加入。最后要判断是否有进位,有则头补充1.
执行用时: 8 ms, 33.00% 。内存消耗: 26.6 MB, 14.91% 。
class Solution { public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int i ; int a1=a.length()-1; int a2=b.length()-1; if(a.length()>=b.length()){ i = b.length(); }else{ i=a.length(); } int add = 0; while(i>0){ sb.insert(0,a.charAt(a1)-'0'+b.charAt(a2)-'0'