给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
思路分析:没啥好分析的,撸起袖子就是一梭子。。。
class Solution {
public:
string addStrings(string num1, string num2) {
string result = num1;
int lengthNumOne = num1.size();
int lengthNumTwo = num2.size();
int lengthResult = max(lengthNumOne, lengthNumTwo);//对齐后的长度
//首先将数位进行对齐
if (lengthNumOne < lengthNumTwo){
for (int i = lengthNumOne; i < lengthNumTwo; ++i){
result = "0" + result;
}
}
else {
for (int i = lengthNumTwo; i < lengthNumOne; ++i){
num2 = "0" + num2;
}
}
//加法的核心算法,index从低位加到下标1,因为下标0可能产生进位
for (int index = lengthResult - 1; index > 0; --index){
result[index] += num2[index] - '0';
if (result[index] > '9'){//产生进位
result[index] -= 10;
++result[index - 1];
}
}
result[0] += num2[0] - '0';
if (result[0] > '9'){//最高位产生进位
result[0] -= 10;
result = "1" + result;
}
return result;
}
};