题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

#include <string>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) 
    {
        // write code here
        // long long a = stoi(s);
        // long long b = stoi(t);
        // long long c = a + b;
        // cout << c;
        // string ans;
        // while(c != 0)
        // {
        //     int x = c % 10;
        //     char y = x + '0';
        //     ans += y;
        //     c = c / 10;
        // }
        // if (ans.empty())
        // {
        //     ans = "0";
        // }
        // reverse(ans.begin(), ans.end());
        // return ans;
        
        if (s.size() == 0)
        {
            return t;
        }
        if (t.size() == 0)
        {
            return s;
        }

        int m = s.size();
        int n = t.size();
        int carry = 0;
        string ans;

        int i = m - 1, j = n - 1;
        while (i >= 0 || j >= 0 || carry > 0) 
        {
            int sum = carry;
            if (i >= 0) 
            {
                sum += s[i] - '0';
                i--;
            }
            if (j >= 0) 
            {
                sum += t[j] - '0';
                j--;
            }

            carry = sum / 10;
            ans += to_string(sum % 10);
        }

        reverse(ans.begin(), ans.end());
        return ans;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务