题解 | #大数加法#

大数加法

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

#include <algorithm>
#include <string>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
        // write code here

        //判断s,t是否都是十进制
        for(char i : s){
            if(!isdigit(i)){
                return "";
            }
        }
        for(char i : t){
            if(!isdigit(i)){
                return "";
            }
        }
        // 不能直接stoi转,因为会超出长度限制
        s = "0"+s;
        t = "0"+t;
        reverse(s.begin(),s.end());
        reverse(t.begin(),t.end());
       // cout<<s<<","<<t<<endl;
        int Asize = s.size();
        int Bsize = t.size();
        int re = 0;
        int len = max(s.size(), t.size());
        if(len == s.size()){
            for(int i =0;i<Asize-Bsize;i++){
                t += "0";
            }
        }
        else{
            for(int i =0;i<Bsize-Asize;i++){
                s += "0";
            }
        }
        string resStr = "";
        for(int i = 0; i<len; i++){
            //cout<<s[i]<<","<<t[i]<<endl;
            int sNum = s[i]-'0';
            int tNum = t[i]-'0';
            int sum = sNum+tNum+re;
            if(sum>9){
                re = sum/10;
                sum = sum%10;
            }else{
                re = 0;
            }
            resStr += to_string(sum);
            //cout<<"resStr,"<<resStr<<endl;
        }
        
        reverse(resStr.begin(), resStr.end());
        //cout<<resStr<<endl;
        if(resStr[0] == '0'){
            resStr.erase(resStr.begin());
        }
        
        return resStr;
    }
};

全部评论

相关推荐

Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务