题目:
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.
题意给两个字符串表示的数字,计算他们的乘积。其实就是手写一个大数乘法,先翻转字符串便于从低位开始计算。
模拟乘法的运算过程,把中间结果存在data中,最后在考虑data的进位并存到结果字符串里。
注意点的就是考虑结果的前置0不要添加进去。
int data[100000]; class Solution { public: string multiply(string num1,string num2) { reverse(num1.begin(),num1.end()); reverse(num2.begin(),num2.end()); memset(data,sizeof(data)); int len1=num1.length(); int len2=num2.length(); int i,j; for(i=0;i<len1;++i)for(j=0;j<len2;++j) { data[j+i]+=(num1[i]-'0')*(num2[j]-'0'); } int p,temp; i=p=0; while(i<len1+len2-1||p!=0) { temp=data[i]+p; data[i]=temp%10; p=temp/10; ++i; } string result; bool flag=0; for(;i>=0;--i) { if(flag==0&&data[i]==0)continue; else { flag=1; result+=(char)(data[i]+'0'); } } if(flag==0)return "0"; else return result; } };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。