字符串的各位对齐,不足的位以0代替,从末位开始相加,如果大于等于10则产生进位,保存进了多少位,下次加的时候也需要把进位标志加上
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
string solve(string s, string t) {
// write code here
//字符串从末尾相加,大于10就进位,用变量保存进位的情况
reverse(s.begin(),s.end());
reverse(t.begin(),t.end());
int index = max(s.length(),t.length());
string ret = "";
int flag = 0;
//遍历字符串进行相加;
for(int i=0; i<index; i++)
{
//10
uint8_t num1 = 0;
if(s.length() > i)
{
num1 = s.at(i) - '0';
}
//99
uint8_t num2 = 0;
if(t.length() > i)
{
num2 = t.at(i) - '0';
}
uint8_t total = num1 + num2 + flag;
//本次相加的总和,如果大于10则产生进位,否则需要重置进位标志为0
if(total >= 10)
{
flag = total / 10;
total = total % 10;
}
else
{
flag = 0;
}
ret.push_back(total+'0');
}
//加完以后判断最终是否有进位
if(flag > 0)
ret.push_back(flag+'0');
reverse(ret.begin(), ret.end());
return ret;
}
};
京公网安备 11010502036488号