之前听别人说过这道题,昨晚做某家公司的笔试题遇到这个问题,今天面试也遇到这道题了,有时候想这题还真有缘~~~~~~最后彻底搞明白一下。
两个数字的字符串,计算相加之后得到的字符串,当数很大的时候用这种方法计算高效。例如,string a=“453”,string b=“29”,add(a,b)输出“482”。
#include <iostream>
#include <string>
using namespace std;
string add(string a, string b)
{
string result;
int i=a.length()-1;
int j=b.length()-1;
int c=0;
int temp=0;
char s;
while(i>=0&&j>=0){
temp=a[i]-'0'+b[j]-'0'+c;
if(temp<10) {
s=temp+'0';
c=0;
}
else{
s=temp%10+'0';
c=temp/10;
}
result.push_back(s);
i--;
j--;
}
while(c>0){
if(i<0&&j<0) {
s=c+'0';
c=0;
}
if(i>=0) {
temp=a[i]-'0'+c;
if(temp<10) {
s=temp+'0';
c=0;
}
else{
s=temp%10+'0';
c=temp/10;
}
i--;
}
if(j>=0) {
temp=b[j]-'0'+c;
if(temp<10) {
s=temp+'0';
c=0;
}
else{
s=temp%10+'0';
c=temp/10;
}
j--;
}
result.push_back(s);
}
while(i>=0) {
s&