美文网首页程序员
力扣 67 二进制求和

力扣 67 二进制求和

作者: zhaojinhui | 来源:发表于2020-08-12 11:36 被阅读0次

题意:给定两个二进制字符串,求和

思路:遍历两个字符串

  1. 如果第一个字符穿没便利完,则carry加上第一个字符串当前位置的值,并把第一个字符串位置后移一位
  2. 第二个字符串同上
  3. carry%2加到结果字符串
  4. carry更新为carry/2
  5. 把结果stringbuilder反转,然后转化为string并返回

思想:字符串运算

复杂度:时间O(n),空间O(1)

class Solution {
    public String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int carry = 0;
        int len1 = a.length() - 1;
        int len2 = b.length() - 1;
        while(len1 >= 0 || len2 >= 0 || carry > 0) {
            if(len1 >= 0) {
                carry += a.charAt(len1--) - '0';
            }
            if(len2 >= 0) {
                carry += b.charAt(len2--) - '0';
            }
            sb.append(carry%2);
            carry /= 2;
        }
        return sb.reverse().toString();
    }
}

相关文章

网友评论

    本文标题:力扣 67 二进制求和

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