美文网首页
67. 二进制求和

67. 二进制求和

作者: JiangCheng97 | 来源:发表于2019-05-24 16:33 被阅读0次

    给定两个二进制字符串,返回他们的和(用二进制表示)。

    输入为非空字符串且只包含数字 10

    示例 1:

    输入: a = "11", b = "1"
    输出: "100"
    

    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"
    

    源码

    class Solution {
        public String addBinary(String a, String b) {
           StringBuilder sb = new StringBuilder();
            StringBuilder s1 = new StringBuilder();
            StringBuilder s2 = new StringBuilder();
            
            int i = a.length()-1;
            int j = b.length()-1;
            if(i<j){
                for(int x = 0; x<j-i; x++){
                    s1.append("0");
                }
                a = s1.append(a).toString();
            }else if(i>j){
                for(int x = 0; x<i-j; x++){
                    s2.append("0");
                }
                b = s2.append(b).toString();
            }
            i = a.length()-1;
            j = b.length()-1;
            char tep = '0';
            while(i>=0&&j>=0){
                if(tep=='0'){
                    if(a.charAt(i)=='1'&&b.charAt(j)=='1'){
                        tep='1';
                        sb.append("0");
                    }else{
                        tep='0';
                        char c = a.charAt(i)>b.charAt(j)?a.charAt(i):b.charAt(j);
                        sb.append(c);
                    }
                }else{
                    if(a.charAt(i)=='0'&&b.charAt(j)=='0'){
                        tep='0';
                        sb.append("1");
                    }else{
                        tep='1';
                        if(a.charAt(i)==b.charAt(j)){
                            sb.append("1");
                        }else{
                            sb.append("0");
                        }
                        
                    }
                }
                j--;
                i--;
            }
            
            if(tep=='1'){
                sb.append('1');
            }
            
            return sb.reverse().toString();
        }
    }
    

    相关文章

      网友评论

          本文标题:67. 二进制求和

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