(Leetcode-字符串-2) 字符串运算

news/2024/5/16 18:48:31

1.字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:

1.num1 和num2 的长度都小于 5100.
2.num1 和num2 都只包含数字 0-9.
3.num1 和num2 都不包含任何前导零。
4.你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

分析:
1.sum结果的位数为num1与num2最大位数多一
2.mod为记录每位相加之后的进位数

string addStrings(string num1, string num2) {
          int size=max(num1.size(),num2.size())+1;
        string sum(size,'0');
        int i=num1.size()-1;
        int j=num2.size()-1;
        int m=size-1;
        int mod=0;
        while(i>=0||j>=0){
            int a=i>=0?(num1[i--]-'0'):0;
            int b=j>=0?(num2[j--]-'0'):0;
            if(a+b+mod<=9){
                sum[m--]=a+b+mod+'0';
                mod=0;
            }else{
                sum[m--]=a+b+mod-10+'0';
                mod=1;
            }
        }
        if(mod)sum[m]='1';
        else sum.erase(sum.begin());
        return sum;
}

2.字符串相乘

给定两个以字符串表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积。
注意:

1.num1 和 num2 的长度均小于110。
2.num1 和 num2 均只包含数字 0-9。
3.num1 和 num2 均不以零开头。
4.你不能使用任何内置的大整数库或直接将输入转换为整数。

分析:
1.建立一个整型数组,记录每位相乘的结果(逆序)
2.num1的每位逐个乘以num2的每位在加上前一位的进位mod

string multiply(string num1, string num2) {
        int m=num1.size();
        int n=num2.size();
        vector<int> nums(m+n,0);
        for(int i=0;i<m;i++){
            int mod=0;
            for(int j=0;j<n;j++){
                nums[i+j]+=(num1[m-i-1]-'0')*(num2[n-j-1]-'0')+mod;
                mod=nums[i+j]/10;
                nums[i+j]%=10;
            }
            if(mod)nums[i+n]+=mod;
        }
        //当一个数乘以0时等于0
        while(nums.back()==0&&nums.size()>1)nums.pop_back();
        int size=nums.size();
        string result(size,'0');
        for(int i=0;i<size;i++)result[size-i-1]=nums[i]+'0';
        return result;
}

http://www.niftyadmin.cn/n/2639154.html

相关文章

十二星座程序猿怪咖个性_你中了几条?

摘要&#xff1a; 摩羯座 摩羯希望被重用&#xff0c;他们不喜欢自己一天没有事情干&#xff0c;他们希望自己忙起来&#xff0c;他们给别人说“没时间。忙着呢”的时候会非常的爽&#xff01; 他们喜欢把控全局&#xff0c;因此他们肯定是个合格的架构师&#xff0c;他们希望…

IT认证价值几何

IT认证价值几何2001年3月21日17:27:43 光明日报   每年&#xff0c;国内有上万人考Office认证&#xff0c;有上千人考MCSE&#xff0f;MCSD认证&#xff0c;越来越多的人参加Cisco、Java或是Oracle的认证考试。考IT认证有用吗&#xff1f;   对考生来说&#xff0c;拿到IT…

ActiveReports 6:如何升级旧版本的项目

ActiveReports for .NET 6.0是报表控件ActiveReports的最新版本&#xff0c;在丰富报表设计功能的同时&#xff0c;还增加了Visual Studio 2010支持、Flash报表浏览器、水晶报表文件转换、PDF文件输出、可再分发的最终用户报表设计器等一系列新特性。如果现有的项目基于ActiveR…

IT业十大热门职位介绍

IT业十大热门职位介绍2001年3月21日17:22:19 网易报道   电子商务项目管理。要求具备计划、项目实施、日程管理、预算、资源分配和商品交付质量管理等整体管理项目的能力&#xff0c;需要有管理大型、复杂与并行项目的经验&#xff0c;包括计划开发、项目实施、客户管理的经…

产品技术恩仇记:这个需求真的很简单吗?

总有一些产品经理在跟技术沟通的时候&#xff0c;说这个不就是调用一个什么方法&#xff0c; 那个按钮不就是添加个监听事件吗&#xff0c;有什么难的。 但实际开发中要比产品经理想的困难、麻烦得多&#xff0c; 老夫来分享一些人僧惊艳。 对于产品和开发&#xff0c;两支天赋…

阿里巴巴前端专家渚薰:H5互动的正确打开方式

摘要&#xff1a; 本文内容是阿里巴巴前端专家 渚薰 在 FDCon2017前端开发者大会 上的主题分享&#xff0c;IT大咖说为独家视频合作方。 编辑IT大咖说阅读字数: 1539 用时: 6分钟 摘要 现在越来越多的产品或营销页面&#xff0c;以H5互动&#xff08;动画、3D&#xff09;的方式…

解决你MCSE最大的困惑

解决你MCSE最大的困惑2001年4月12日9:32:2 启迪网   在NT 4.0系列考试中有三门课程可以使用中文考试&#xff0c;分别为70-58 Networking Essentials、70-59 TCP/IP on NT 4、70-67 NT 4.0 Server。然而目前NT 4.0考试已经全部作废&#xff0c;新推出的Win2K系列考试中目前还…

翻译:CREATE FUNCTION语句(已提交到MariaDB官方手册)

本文为mariadb官方手册&#xff1a;CREATE FUNCTION的译文。 原文&#xff1a;https://mariadb.com/kb/en/library/create-function/我提交到MariaDB官方手册的译文&#xff1a;https://mariadb.com/kb/zh-cn/create-function/ 语法 CREATE [OR REPLACE][DEFINER {user | CUR…