Leetcode 67 Add Binary 二進位制加
阿新 • • 發佈:2018-12-24
題目描述:
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); } };