9.4Add Strings数字处理
题目描述
给定两个由数组组成的字符串,求他们相加的结果
输入输出样例
Input :num1 = "99", num2 = "1"
Output:100
输出是string类型的整数
题解
因为相加是先加个位,再加十位,所以可以先翻转字符串,再逐位计算。主要考细节,如进位、位数差等
cpp
#include <iostream>
#include <string>
using namespace std;
string addStrings(string num1, string num2) {
string output("");
reverse(num1.begin(), num1.end());//反转字符串
reverse(num2.begin(), num2.end());
int onelen = num1.length(), twolen = num2.length();
if (onelen <= twolen) {
swap(num1, num2);//交换两个变量的内容
swap(onelen, twolen);
}
int addbit = 0;
for (int i = 0; i < twolen; ++i) {
int cur_sum = (num1[i] - '0') + (num2[i] - '0') + addbit;
output += to_string((cur_sum) % 10);
addbit = cur_sum < 10 ? 0 : 1;
}
for (int i = twolen; i < onelen; ++i) {
int cur_sum = (num1[i] - '0') + addbit;
output += to_string((cur_sum) % 10);
addbit = cur_sum < 10 ? 0 : 1;
}
if (addbit) {
output += "1";
}
reverse(output.begin(), output.end());
return output;
}
int main() {
string num1 = "99", num2 = "1";
cout << addStrings(num1, num2) << endl;
return 0;
}