字符串相加(字符串leetcode415)-------------------c++实现
题目表述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
样例
输入:num1 = “11”, num2 = “123”
输出:“134”
输入:num1 = “456”, num2 = “77”
输出:“533”
条件
1 <= num1.length, num2.length <= 104
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
思路
1.先倒过来处理相同位,然后看最后一次进位,对较长的位置进行进位判断,最后把不动位加入结果。
2.直接对元字符串处理,看完答案感觉醍醐灌顶
注意点
注意多余位中为9的位。
ac代码
本人代码c++:
class Solution {
public:
string addStrings(string num1, string num2) {
string result;
string str;
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
int longth = min(num1.size(),num2.size());
bool nextadd;
for(int i=0;i<longth;i++)
{
if((num1[i]-'0')+(num2[i]-'0')+nextadd<10)
{result.append(1,'0'+(num1[i]-'0')+(num2[i]-'0')+nextadd);nextadd=0;}
else
{result.append(1,'0'+(num1[i]-'0')+(num2[i]-'0')+nextadd-10);nextadd=1;}
} //处理前面共有的位数
if(num1.size()<num2.size())
str=num2;
else if(num1.size()>num2.size())
str=num1; //把长的位数串赋值给str
if(nextadd) //如果共有位最后有进位
{
if(num1.size()==num2.size())
{result.append("1");}
else
{ while(str[longth]=='9'){
result.append("0");
longth++;
}
if(longth<str.size())
result.append(1,str[longth++]+1);
else
result.append("1");
}
}
if(str.size()>longth) //剩余位数加入结果
result.append(str,longth,str.size()-longth);
reverse(result.begin(),result.end());
return result;
}
};
答案代码c++:
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.length() - 1, j = num2.length() - 1, add = 0;
string ans = "";
while (i >= 0 || j >= 0 || add != 0) {
int x = i >= 0 ? num1[i] - '0' : 0;
int y = j >= 0 ? num2[j] - '0' : 0;
int result = x + y + add;
ans.push_back('0' + result % 10);
add = result / 10;
i -= 1;
j -= 1;
}
// 计算完以后的答案需要翻转过来
reverse(ans.begin(), ans.end());
return ans;
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/add-strings/solution/zi-fu-chuan-xiang-jia-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。