题目链接:https://leetcode-cn.com/problems/add-strings/
题目:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
用字符串模拟两数加法
c++代码:
#include<iostream>
#include<string.h>
using namespace std;
class Solution {
public:
string addBinary(string a, string b) {
string c;
int maxx = a.length()>b.length()?a.length():b.length();
// cout<<maxx<<endl;
if(a.length()>b.length()){
for(int i=b.length();i<a.length();i++){
c+='0';
}
b = c+b;
}else{
for(int i=a.length();i<b.length();i++){
c+='0';
}
a = c+a;
}
// cout<<a<<"|"<<b<<endl;
for(int i=maxx-1;i>0;i--){
int num = a[i]-'0'+b[i]-'0';
// cout<<"num="<<num<<endl;
a[i] = num%10+'0';
// cout<<"a[i]="<<a[i]<<endl;
if(num>=10){
a[i-1] += 1;
// cout<<a[i-1]<<endl;
}
}
// cout<<a<<endl;
int num = a[0]-'0'+b[0]-'0';
a[0] = num%10+'0';
if(num>=10){
a = "1"+a;
}
return a;
}
};
int main()
{
string a,b;
while(1)
{
cin>>a>>b;
Solution solution;
cout<<solution.addBinary(a,b)<<endl;
}
}