90个题了,真心不容易。
两个字符串的二进制加法。找一个int来存储进位。
class Solution { public: string addBinary(string a, string b) { string ans = ""; int lenMin = a.length() < b.length()?a.length():b.length(); int inbit = 0; for(int i = 0;i < lenMin;i++) { int aVal = a[a.length()-1-i] - '0'; int bVal = b[b.length()-1-i] - '0'; int sum = inbit + aVal + bVal; inbit = sum / 2; ans.push_back(sum%2 + '0'); } if(a.length() > b.length()) { for(int i = lenMin;i < a.length();i++) { int Val = a[a.length()-1-i] - '0' + inbit; inbit = Val / 2; ans.push_back(Val%2 + '0'); } } else { for(int i = lenMin;i < b.length();i++) { int Val = b[b.length()-1-i] - '0' + inbit; inbit = Val / 2; ans.push_back(Val%2 + '0'); } } if(inbit != 0) { ans.push_back(inbit + '0'); } string ansr(ans.rbegin(),ans.rend()); return ansr; } };