Leetcode 67 Add Binary 二進制加

題目描述:

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"

Return "100".

用兩個string表示大數,返回他們的和(也用string)

思路:

    1.不用想,這道題用string肯定是有坑的,很有可能輸入的string很長,遠遠超過了long long的範圍,將string轉換成long long再返回去肯定不行。


    2.仿照加法器,這一位p由三部分構成:A[i],B[i],以及上一位的進位,三個加起來了後,p%2就是這一位的值,p/=2得到下一位的進位。由此往復

代碼:

class Solution {
public:
    string reverse(string a)
    {
        string s=a;
        int lo=0,hi=s.size()-1;
        while(lo<hi)
        {
            char temp = s[lo];
            s[lo]=s[hi];
            s[hi]=temp;
            lo++;hi--;
        }
        return s;
    }
    string addBinary(string a, string b) 
    {
        string ans="";
        int p = 0, i = a.size() - 1, j = b.size() - 1;
        while(i >= 0 || j >= 0 || p == 1)
        {
            p += i >= 0 ? a[i --] - '0' : 0;
            p += j >= 0 ? b[j --] - '0' : 0;
            ans += char(p % 2 + '0');
            p /= 2;
        } 
        return reverse(ans);
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章