实现两个数字(0-9)字符相加减,首先要申请一个大容量的字符串S,然后将两个字符串最后一位依次相加,
如果小于9,直接保存到S中
如果大于9,则减10保存,并进位1
最后如果进位为1,则给S+‘1’,然后逆转
实现代码如下:
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
string addStrings(string num1, string num2) {
int len1 = num1.length() - 1;
int len2 = num2.length() - 1;
string num3 = "";
int step = 0;
int sum = 0;
int capacity = len1 > len2 ? (len1 + 1) : (len2 + 1);
num3.reserve(capacity);
while (len1 >= 0 || len2 >= 0){
sum = 0;
sum += step;
if (len1 >= 0){
sum += num1[len1] - '0';
}
if (len2 >= 0){
sum += num2[len2] - '0';
}
if (sum > 9){
sum -= 10;
step = 1;
}
else{
step = 0;
}
num3 += sum + '0';
len1--;
len2--;
}
if (step == 1){
num3 += '1';
}
reverse(num3.begin(), num3.end());
return num3;
}
};
int main(){
string s1 = "1324";
string s2 = "24443";
Solution S;
string s3=S.addStrings(s1, s2);
cout << s3 << endl;
system("pause");
return 0;
}