美文网首页
LeetCode算法题-Easy-Math(67)

LeetCode算法题-Easy-Math(67)

作者: Dane_404 | 来源:发表于2019-02-14 08:49 被阅读0次

67. Add Binary

题目:Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101''

意思是:输入两个二进制字符串,输出两个二进制相加后的结果的字符串。
思路是:两个二进制字符串从最后开始遍历,拿到每个char,可能是'1'或'0',两个字符串的char相互累加,由于'1'在ASCII对应为49,'0'为48,所以累加之前要-'0',最后,两个char计算结果可能是0到2,所以sum%2为当前的值,如果是2,还需要进一位,所以sum/2,然后在下次循环中加上。

class Solution {
    public String addBinary(String a, String b) {
        
        int aLen = a.length()-1;
        int bLen = b.length()-1;
        StringBuffer sb = new StringBuffer();
       
        int temp = 0;
        while(aLen >= 0 || bLen >= 0){
             int sum = temp;
            if(aLen >= 0){
                sum += a.charAt(aLen) - '0';
                aLen--;
            }
            
            if(bLen >= 0){
                sum += b.charAt(bLen) - '0';
                bLen--;
            }
            sb.append(sum%2);
            temp = sum/2;
         
        }
        
         if(temp !=0 )            
            sb.append(1);
        
        return sb.reverse().toString();
    }
}

相关文章

网友评论

      本文标题:LeetCode算法题-Easy-Math(67)

      本文链接:https://www.haomeiwen.com/subject/rxpdeqtx.html