leetcode——67. 二进制求和

简单题

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        s=0
        a=list(a)
        a=a[::-1]
        for i in range(1,len(a)):
            s+=int(a[i])*2**i
        s+=int(a[0])
        t=0
        b=list(b)
        b=b[::-1]
        for j in range(1,len(b)):
            t+=int(b[j])*2**j
        t+=int(b[0])
        n=s+t
        return bin(n)[2:]
执行用时 :60 ms, 在所有 python3 提交中击败了36.13%的用户
内存消耗 :13.7 MB, 在所有 python3 提交中击败了5.24%的用户
 
                                             ——2019.10.17
 
 

没有做出来,还有位运算的思想没有去了解。
官方题解是将字符串翻转,然后进行求解,再将结果翻转,思路很巧妙。
就是自己没有想出来,还需要再次进行复习。
 
public String addBinary(String a, String b) {
        StringBuffer ans = new StringBuffer();

        int n = Math.max(a.length(), b.length()), carry = 0;
        for (int i = 0; i < n; ++i) {
            carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
            carry += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0;
            ans.append((char) (carry % 2 + '0'));
            carry /= 2;
        }

        if (carry > 0) {
            ans.append('1');
        }
        ans.reverse();

        return ans.toString();
    }

 

 

——2020.7.7

 

posted @ 2019-10-17 21:37  欣姐姐  阅读(198)  评论(0编辑  收藏  举报