leetcode 67.二进制求和

假装没事ソ 提交于 2020-02-02 02:37:33

67.二进制求和

执行用时 :3 ms, 在所有 Java 提交中击败了60.62%的用户

将每一位数对应并相加,再加上进位(cout),cout只需要将这一位的结果除以2即可 ( 2/2 == 1 , 1/2==0 , 0/2 == 0 ) ,最后将结果mod 2加入到StringBuilder并反转输出

class Solution {
   public String addBinary(String a, String b) {
        int al=a.length()-1;
        int bl=b.length()-1;
        StringBuilder stringBuilder=new StringBuilder();
        int cout=0;
        int t=0;
        for (int i = al, j=bl; i>=0||j>=0 ; i--,j--) {
            int l=i>=0?a.charAt(i)-'0':0;
            int r=j>=0?b.charAt(j)-'0':0;
            t=l+r+cout;
            cout=t/2;
            stringBuilder.append(t%2);
        }
        if(cout==1)
        stringBuilder.append(cout);

        return stringBuilder.reverse().toString();
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!