题目分析
给定两个字符串形式的正整数num1和num2,计算num1和num2之和。
解题思路
首先统计两个字符串的长度,分以情况求解:
- 当len1 <= 0 && len2 <= 0,直接返回空字符串;
- 当len1 <= 0 && len2 > 0,直接返回字符串num2;
- 当len1 > 0 && len2 <= 0,直接返回字符串num1;
- 首先统计len1与len2的长度,然后从低位进行相加,当相加到最短字符串长度后,处理多出来的位的相加即可。
C++实现
string addStrings(string num1, string num2)
{
int len1 = num1.size();
int len2 = num2.size();
if (len1 <= 0 && num2.size() <= 0)
return "";
else if (len1 <= 0)
return num2;
else if (len2 <= 0)
return num1;
else
{
string result = "";
int c = 0;
int sum;
int minlen = min(len1, len2);
int i = len1 - 1;
int j = len2 - 1;
while (minlen > 0)
{
sum = c + (num1[i] - '0') + (num2[j] - '0');
c = sum / 10;
result += sum % 10 + '0';
i--;
j--;
minlen--;
}
// 当num1较长
while (i != -1)
{
sum = c + (num1[i] - '0');
c = sum / 10;
result += sum % 10 + '0';
i--;
}
// 当num2较长
while (j != -1)
{
sum = c + (num2[j] - '0');
c = sum / 10;
result += sum % 10 + '0';
j--;
}
// 处理最后的进位
if (i == -1 && j == -1 && c != 0)
result += c + '0';
reverse(result.begin(), result.end());
return result;
}
}