C++程式:新增兩個二進位制字串,並以二進位制字串形式返回
假設我們有兩個二進位制字串a和b,我們需要將這兩個二進位制數相加並找到它們的和,也以字串的形式表示。
因此,如果輸入類似於a = "10110",b = "10010",則輸出將為"101000"。
為了解決這個問題,我們將遵循以下步驟:
- ret := 空字串
- na := a的長度,nb := b的長度
- i := na - 1,j := nb - 1
- carry := 0
- 當 (i >= 0 或 j >= 0) 時,執行以下操作:
- addA := (如果 i >= 0,則為 a[i] - '0' 的ASCII碼,否則為 0)
- addB := (如果 j >= 0,則為 b[j] - '0' 的ASCII碼,否則為 0)
- sum := addA + addB + carry
- carry := sum / 2
- sum := sum % 2
- ret := ret 連線 sum
- i -= 1
- j -= 1
- 如果 carry 不為零,則
- ret := ret 連線 carry
- 反轉陣列 ret
- 返回 ret
讓我們看看以下實現,以便更好地理解:
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string solve(string a, string b){
string ret = "";
int na = a.size();
int nb = b.size();
int i = na - 1;
int j = nb - 1;
int carry = 0;
while(i >= 0 || j >= 0){
int addA = i >= 0 ? a[i] - '0' : 0;
int addB = j >= 0 ? b[j] - '0' : 0;
int sum = addA + addB + carry;
carry = sum / 2;
sum %= 2;
ret += to_string(sum);
i--;
j--;
}
if(carry)
ret += to_string(carry); reverse(ret.begin(), ret.end());
return ret;
}
};
main(){
string a = "10110", b = "10010"; Solution ob;
cout << ob.solve(a, b);
}輸入
"10110","10010"
輸出
101000
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP