【LeetCode】43. Multiply Strings 大数相乘算法
来源:互联网 发布:火车票二维码扫描软件 编辑:程序博客网 时间:2024/06/05 19:02
题目要求: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.
题目链接:leetCode
我的思路
两个数相乘的时候,最后得到的积位数绝对不会超过这两个数的位数和
假设A数有m位,B数有n位,两数相乘得到C的位数为m+n,那么使用m+n的int数组存放每一位相乘的结果,当然数组中的每一位都不一定是个位数,所以最后用一个循环把这个数组中的数字循环一边,逐个进位,最后得到结果
如果采用这种思路的话,自己就需要手动处理一些首位为0的情况
代码
代码是C++的:
class Solution{public: string multiply(string num1, string num2) { int num1_size = num1.size(); int num2_size = num2.size(); //注意,这个并不是一定就是两个相加这么长的位数 int result_size = num1_size + num2_size; int result[result_size] = {0}; int num1_array[num1_size] = {0}; int num2_array[num2_size] = {0}; for( int i=0; i<num1_size; i++) { num1_array[i] = num1[i] - '0'; } for( int i=0; i<num2_size; i++) { num2_array[i] = num2[i] - '0'; } for(int i=0; i<num1_size; i++) { for(int j=0; j<num2_size; j++) { result[i+j+1] = result[i+j+1] + num1_array[i]*num2_array[j]; } } for(int i=result_size-1; i>=0; i--) { int temp1 = result[i]%10; int temp2 = (result[i]-temp1)/10; result[i-1] = result[i-1] + temp2; result[i] = temp1; } bool flag = true; string s = ""; for(int i=0; i<result_size; i++) { if(flag && result[i]==0 && i!=result_size-1) { continue; } else { flag = false; } char temp_char = '0' + result[i]; s.append(1,temp_char); } return s; }};
运算效率结果截图
0 0
- 【LeetCode】43. Multiply Strings 大数相乘算法
- 43. Multiply Strings 大数相乘 leetcode
- [leetcode] 43. Multiply Strings(大数相乘)
- LeetCode Multiply Strings 大数相乘
- 43.Multiply Strings 大数相乘
- Multiply Strings 大数相乘
- 43. Multiply Strings(大数相乘)
- Multiply Strings(大数相乘)
- leetcode-43. Multiply Strings(大整数相乘)
- [LeetCode] Multiply Strings 字符串相乘
- 43. Multiply Strings 大数
- Leetcode #43. Multiply Strings 字符串相乘 解题报告
- LeetCode | Multiply Strings(字符串相乘)
- leetcode 43 Multiply Strings (字符串相乘)
- LeetCode Multiply Strings(大整数相乘)
- leetcode 43. Multiply Strings 9大数相差(java实现)
- [LeetCode]43.Multiply Strings
- LeetCode --- 43. Multiply Strings
- 最少需要删除多少个字符才能使字符串S变为回文串
- 推理问题(c语言实现)
- COUOJ A. 软妹币!软妹币!软妹币!
- windows上搭建react native环境
- JavaWeb - Tomcat的配置信息
- 【LeetCode】43. Multiply Strings 大数相乘算法
- spring mvc 使用kaptcha生成验证码
- Java多线程-synchronized关键字详解
- 浅谈linux性能调优之十二:红帽优化策略Tuned
- c语言起步
- springmvc(二)注解和多文件的配置
- jvm java虚拟机 新生代的配置
- 【缓存\性能】HTML5缓存的那些事
- Mysql常用命令