1. 程式人生 > >LeeCode from 0 —— 67. Add Binary

LeeCode from 0 —— 67. Add Binary

strings emp 數字 rac nta ins 所有 c++ char

67. Add Binary

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

The input strings are both non-empty and contains only characters 1 or 0.

解題思路:

1)將每一位字符都轉換為數字,將兩個字符串對應位的數字相加。若需要進位,則保存進位的值並在下一次相加時加上進位。對應位若不存在則設為0,相加。

2)若兩個字符串所有對應位相加結束,判斷最後一個進位是否為1,若為1,則在字符串最前面補1.

C++代碼如下:

class Solution {
public:
string addBinary(string a, string b) {
int n=a.length()-1;
int m=b.length()-1;
int p=0;
string c="" ;
while(n>=0 || m>=0){
int i= n>=0 ? a[n--]-‘0‘:0;
int j= m>=0 ? b[m--]-‘0‘:0;
int sum=i+j+p;
c=to_string(sum%2)+c;
p=sum/2;
}
c= p==1 ? ‘1‘+c :c;
return c;

}
};

LeeCode from 0 —— 67. Add Binary