程序员

力扣 67 二进制求和

2020-08-12  本文已影响0人  zhaojinhui

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

思路:遍历两个字符串

  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();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读