题解 | #大数加法#

大数加法

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
	  // 如果两个字符串有空的,直接返回另一个字符串,不用管另一个字符串是否为空
        if(s.size() == 0) return t;
        if(t.size() == 0) return s;
        string result;
        stack<char> st;
        int add = 0;
        int i = s.size() - 1, j = t.size() - 1;
	  
	  // 从末位往前加,直到一个字符被加完
        for(; i >= 0 && j >= 0; --i, --j){
		  // 确定入栈的字符
            st.push('0' + ((s[i] - '0') + (t[j] - '0') + add ) % 10);
            //cout<<"栈的大小:"<<st.size()<<endl;
            if((s[i] - '0') + add + (t[j] - '0') >= 10){
                add  = 1;
            } else {
                add = 0;
            }
            //cout<<"栈顶元素:"<<st.top()<<endl;
        }
	  
	  // s加完,单独处理t剩下的字符
        if(i == -1){
            for(; j >= 0; --j){
                st.push('0' + (add + (t[j] - '0')) % 10);
                //cout<<"栈的大小:"<<st.size()<<endl;
                if(add + (t[j] - '0') >= 10){
                    add  = 1;
                } else {
                    add = 0;
                }
                //cout<<"栈顶元素:"<<st.top()<<endl;
            }
        } 
	  // t加完,单独处理s剩下的字符
	  else if(j == -1){
            for(; i >= 0 ; --i){
                st.push('0' + (add + (s[i] - '0')) % 10);
                //cout<<"栈的大小:"<<st.size()<<endl;
                if((s[i] - '0') + add >= 10){
                    add  = 1;
                } else {
                    add = 0;
                }
            }
            //cout<<"栈顶元素:"<<st.top()<<endl;
        }
	  
	  // 最后判断进位符add是否为1,为1表示有进位,先让result=‘1’
        if(add == 1) result = '1';
	  
	  // 将栈顶元素一次弹出,加到result末尾
        while(!st.empty()){
            //cout<<"栈的大小:"<<st.size()<<endl;
            result.push_back(st.top()); 
            st.pop();
        }
        return result;
    }
};

#刷题#
机械转码刷题进行中~ 文章被收录于专栏

这是一个机械专业学生艰难的转码之路,只会用最简单的想法跟思路,请各路大神不吝赐教,在评论区分享你们的想法!!!

全部评论

相关推荐

10-25 19:38
已编辑
门头沟学院 嵌入式工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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