首页 > 代码库 > Leetcode--Multiply Strings
Leetcode--Multiply Strings
Problem Description:
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
分析:两个string相乘,主要是细节问题,具体方法是依次将一个字符串的每一位和另一个字符串的每一位相乘,要注意每次乘完一个字符后需要将起点加1,在结果中我是从第一位开始存的,完了之后将最终结果string转置即可。具体代码如下:
class Solution { public: string multiply(string num1, string num2) { if(num1.empty()||num2.empty()) return ""; if(num1=="0"||num2=="0") return "0"; int n1=num1.size(); int n2=num2.size(); string res(n1+n2,'0');//记录乘积结果 int flag=0,k=0; for(int i=n1-1,start=0;i>=0;i--,start++) { k=0; flag=0; for(int j=n2-1;j>=0;j--)//num1的每一位依次和num2相乘,start表示每次相乘的起点 { char temp='0'+((res[start+k]-'0')+(num2[j]-'0')*(num1[i]-'0')+flag)%10; flag=((res[start+k]-'0')+(num2[j]-'0')*(num1[i]-'0')+flag)/10; res[start+k]=temp; k++; } if(flag!=0) res[start+k]=('0'+flag); } if(flag!=0) res[n1+n2-1]=('0'+flag); res.assign(res.rbegin(),res.rend());//将最后的结果转置 if(res[0]=='0') res=res.substr(1); return res; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。