题解 | #大数相减#

大数相减

https://www.nowcoder.com/practice/ae4d84312e384a1fa100b613f93f3fe0?tpId=196&tqId=40449&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj&difficulty=undefined&judgeStatus=undefined&tags=595&title=

将字符串转为数组,进行减法模拟运算;

代码+详细注释

小小蒟蒻的代码若有错误或不足,欢迎各位大佬指正

class Solution {
public:
     bool com(string s1,string s2){//判断两个字符串哪个大,要用大数减小数;
        int u=s1.size(),v=s2.size();
        if(u!=v)
        return u>v;
        for(int i=0;i<u;i++){
            if(s1[i]!=s2[i]){
                return s1[i]>s2[i];
            }
        }
        return true;
     }
    string substring(string num1, string num2) {
        // write code here,
        int flag=0;
        vector<int>vec1(100100);  //数组一定要开大一点,容易越界;
        vector<int>vec2(100100);
        if(!com(num1,num2)){  //进入判断,若第二个字符串大则交换,并进行标记;
            flag=1;   //标记,后续加负号;
            num1.swap(num2);
        } 
        int n1=num1.size(),n2=num2.size();
        for(int i=0;i<n1;i++){  //字符串转数组;(倒着存储有助于我们后面减的时候,对齐数位)
            vec1[n1-i]=num1[i]-'0';
        }
        for(int i=0;i<n2;i++){  //字符串转数组;(同理)
            vec2[n2-i]=num2[i]-'0';
        }
        int n=max(n1,n2);   //差数组的长度选择两个数组中最大长度的数组;
        vector<int>c(100100);
        for(int i=1;i<=n;i++){  //减法模拟
            if(vec1[i]<vec2[i]){  //若小于则向后借10;(因为前面数组是倒着存储的)
                vec1[i+1]--;  //后面的数减1;
                vec1[i]+=10;  //借10;
            }
            c[i]=vec1[i]-vec2[i];//两数相减;
        }
        while(c[n]==0&&n>1){   //删除前导0;
            n--;
        }
        string a="";
        if(flag){
                a+="-";   //若被标记过,则加负号;
        }
        for(int i=n;i>0;i--){
            a+=to_string(c[i]);//将数组转为字符;
        }
        return a;
    }
};

创作不易,可否求个小赞赞

全部评论

相关推荐

点赞 评论 收藏
分享
运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
在debug的柠檬精很迷人:好消息:现在HR挑三拣四 15年后 HR跪着求要简历 坏消息:被挑的是这代人,到时候求人的也是这代人。真好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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