美文网首页
415_Add_Strings 字符串相加

415_Add_Strings 字符串相加

作者: lazy_ccccat | 来源:发表于2020-01-15 00:26 被阅读0次

    题目描述

    https://leetcode-cn.com/problems/add-strings/

    解法

    解法1:我的解法

    class Solution {
    public:
        string addStrings(string num1, string num2) {
            string res;
            int i = num1.size() - 1;
            int j = num2.size() - 1;
            int carry = 0;
            for (; i >= 0 && j >= 0; i--, j--) {
                int sum = (num1[i] - '0') + (num2[j] - '0') + carry;
                int val = sum % 10;
                carry = sum / 10;
                //res.insert(size_t(0), size_t(1), val + '0');
                res.insert(res.begin(), val + '0');
            }
            int index;
            string left;
            if (i >= 0) {
                index = i;
                left = num1;
            } else {
                index = j;
                left = num2;
            }
            while (index >= 0) {
                int sum = left[index] - '0' + carry;
                int val = sum % 10;
                carry = sum / 10;
                //res.insert(size_t(0), size_t(1), val + '0');
                res.insert(res.begin(), val + '0');
                index--;
            }
            if (carry) {
                //res.insert(size_t(0), size_t(1), carry + '0');
                res.insert(res.begin(), carry + '0');
            }
            return res;
        }
    };
    

    没啥好说的,就是模拟手工加法,但是写的太长了,啰嗦。一会贴一个别人写的简洁版本。
    另外 res.insert(0, 1, carry + '0'); 不知道为啥突然编译不过了,说call to member function 'insert' is ambiguous。加了size_t()就好了。
    然后参考了别人的提交,res.insert(res.begin(), carry + '0'); 这么写也可以,以后用这个重载版本吧。

    解法2:简洁

    思路一样,就是写法简洁,体会一下。用或,缺少的就补0.

    class Solution {
    public:
        string addStrings(string num1, string num2) {
           int i = num1.size() - 1;
           int j = num2.size() - 1;
           string res;
           int carry = 0;
           while (i >= 0 || j >= 0) {
               int a = (i >= 0) ? num1[i--] - '0' : 0;
               int b = (j >= 0) ? num2[j--] - '0' : 0;
               int sum = a + b + carry;
               int val = sum % 10;
               carry = sum / 10;
               res.insert(res.begin(), val + '0');
           }
           return carry ? "1" + res : res;
        }
    };
    

    相关文章

      网友评论

          本文标题:415_Add_Strings 字符串相加

          本文链接:https://www.haomeiwen.com/subject/lkuzactx.html