欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Add Strings

程序员文章站 2022-06-04 11:02:08
...

题目来源
将两个数字字符串相加,返回结果字符串,我原来想着转换为整型,然后进行加法,然后再转为字符串。代码如下:

class Solution {
public:
    string addStrings(string num1, string num2) {
        int n1 = num1.size(), n2 = num2.size();
        long long v1 = 0, v2 = 0;
        for (int i=0; i<n1; i++) {
            v1 = v1 * 10 + (num1[i] - '0');
        }
        for (int i=0; i<n2; i++) {
            v2 = v2 * 10 + (num2[i] - '0');
        }
        return to_string(v1 + v2);
    }
};

但是发现字符串长度可以达到5000+位,直接gg,转换为整型的方法显然行不通了。然后得一个一个加,代码如下:

class Solution {
public:
    string addStrings(string num1, string num2) {
        int n1 = num1.size(), n2 = num2.size();
        int n = max(n1, n2);
        string res = "";
        bool carry = false;
        for (int i=1; i<=n; i++) {
            int tmp1 = n1 >= i ? num1[n1-i] - '0' : 0;
            int tmp2 = n2 >= i ? num2[n2-i] - '0' : 0;
            int tmp = tmp1 + tmp2;
            if (carry) 
                tmp++;
            res = to_string(tmp % 10) + res;
            carry = tmp / 10;
        }
        if (carry)
            res = '1' + res;
        return res;
    }
};