11-06 字符串相加

原题链接
在这里插入图片描述
解析:
题目为长整数相加的变形版本,因为其比较长,所以考虑使用双指针的策略,从右到左依次进行遍历和计算,当相加的数值carry大于10时,取其余数,添加到字符串后面,之后对carry取整,进行下一次的操作。

为了防止在相加的过程中有一个到了头另外一个没到,所以在每一个数组相加的时候,都判断一下是否是到头了,即i>=0 或j>=0。

最后将得到的字符串进行反转即可。

完整代码:

class Solution {
    
    
public:
    string addStrings(string num1, string num2) {
    
    
        int len1 = num1.length();
        int len2 = num2.length();
        int i = len1 -1, j = len2 -1, carry = 0;
        string ans;
        while(i >=0 || j >= 0 || carry != 0)
        {
    
    
            if(i >= 0) carry += num1[i--] - '0';
            if(j >= 0) carry += num2[j--] - '0';
            ans += to_string(carry%10);
            carry /= 10;
        }
        reverse(ans.begin(), ans.end());
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_45885232/article/details/109540782