字符串大数相加
输入:整数字符串string s1,s2
输出:“123”+“456” = “579”
#include<string>
#include<iostream>
#include<stack>
using namespace std;
string subadd(string s1, string s2)
{
int move = 0;
stack<char> out;
int indexs1 = s1.length()-1;
for(int i=s2.length()-1; i>=0; i--)
{
int onechar = s1[indexs1] -'0'+s2[i]-'0'+move;
int diff = onechar -10;
if(diff>=0)
{
out.push(diff+'0');
move = 1;
}
else
{
out.push(onechar+'0');
move = 0;
}
indexs1--;
}
for(int i=indexs1; i>=0; i--)
{
int onechar = s1[i] -'0'+move;
int diff = onechar -10;
if(diff>=0)
{
out.push(diff+'0');
move = 1;
}
else
{
out.push(onechar+'0');
move = 0;
}
}
string tmp;
if(move>0)
{
out.push('1');
while(out.size()>0)
{
tmp.push_back(out.top());
out.pop();
}
}
else
{
out.push('0');
out.pop();
while(out.size()>0)
{
tmp.push_back(out.top());
out.pop();
}
}
return tmp;
}
string add(string s1, string s2)
{
if(s1.length()<s2.length())
{
return subadd(s2,s1);
}
else
{
return subadd(s1,s2);
}
}
int main()
{
string s1 = "123";
string s2 = "0000";
string out = add(s1,s2);
return 0;
}