415. 字符串相加

1、思路

同时遍历两个字符串,以较长的那个长度为遍历次数,短的那个不足的以0充当;遍历完成后,检查最高位是否产生进位。

2、实现代码(C++)

class Solution {
public:
    string addStrings(string num1, string num2) {
        int len1 = num1.length() - 1;
        int len2 = num2.length() - 1;
        int carry = 0;
        string res = "";
        while (len1 >= 0 || len2 >= 0) { 
            int n1 = len1 < 0 ? 0 : num1[len1--]-'0';  // 若num1先遍历完,以0填充  
            int n2 = len2 < 0 ? 0 : num2[len2--]-'0';  // 若num2先遍历完,以0填充  
            int n = n1 + n2 +carry;
            res += n % 10 + '0';
            carry = n / 10;
        }
        // 判断较长的那个字符串遍历完后,是否产生进位
        if (carry == 1) {
            res += 1 + '0';
        }
        reverse(res.begin(), res.end());
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容