以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。
样例
样例 1:
输入 : num1 = "123", num2 = "45"
输出 : "168"
注意事项
num1 和 num2 的长度都小于5100。
num1 和 num2 都只包含数字 0-9。
num1 和 num2 都不包含任何前导零。
您不能使用任何内置的BigInteger库内的方法或直接将输入转换为整数。
思路:将较短字符串前面用0补齐,再将两个字符串对应字符转为字符相加,如果小于10,则可直接添加进新字符串,如果大于等于10,则把个位数付给新字符串,十位数赋给temp进入下一轮的运算,需要的注意的是最前面的一位数也有可能要进位,可以单独考虑。
class Solution {
public:
/**
* @param num1: a non-negative integers
* @param num2: a non-negative integers
* @return: return sum of num1 and num2
*/
string addStrings(string &num1, string &num2) {
// write your code here
int len1=num1.size();
int len2=num2.size();
string result;
if(len1>len2)
{
num2.insert(num2.begin(),len1-len2,'0');
}
if(len1<len2)
{
num1.insert(num1.begin(),len2-len1,'0');
}
int temp=0;
len1=num1.size();
for (int i = len1-1; i >= 1; i--) {
/* code */
temp+=num1[i]-'0'+num2[i]-'0';
if(temp<10) {result.insert(result.begin(),48+temp);temp=0;}
else
{
result.insert(result.begin(),48+temp%10);
temp=1;
}
}
temp+=num1[0]-'0'+num2[0]-'0';
if(temp<10) {result.insert(result.begin(),48+temp);temp=0;}
else
{
result.insert(result.begin(),48+temp%10);
result.insert(result.begin(),'1');
}
return result;
}
};