LeetCode 43 Multiply Strings
2015-12-22 13:57
465 查看
Multiply Strings
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.
Subscribe to see which companies asked this question
解法思路:
这是一道经典的题目,我们要实现的就是基本的乘法运算,这里的难点就是边界问题以及进位的问题,为了处理位运算,我们把字符串获得的结果直接放在整型二维数组中,对二维数组里面的值进行运算。当然这里要注意ASCII码和数字的转换。最后对二维数组的结果求和,然后还原为字符串。
代码如下:
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.
Subscribe to see which companies asked this question
解法思路:
这是一道经典的题目,我们要实现的就是基本的乘法运算,这里的难点就是边界问题以及进位的问题,为了处理位运算,我们把字符串获得的结果直接放在整型二维数组中,对二维数组里面的值进行运算。当然这里要注意ASCII码和数字的转换。最后对二维数组的结果求和,然后还原为字符串。
代码如下:
public String multiply(String num1, String num2) { int len1 = num1.length(); int len2 = num2.length(); if(len1==1&&len2==1){ int k = num1.charAt(0)-'0'; int g=num2.charAt(0)-'0'; return String.valueOf(k*g); } int [][]re1 = new int[len2][len1+len2];//考虑进位 for (int i = len2-1; i >= 0; i--) { int k = num2.charAt(i)-'0'; int type = 0; for (int j = len1-1; j >= 0; j--) { int g=num1.charAt(j)-'0'; int r = k*g; if(type != 0){ r+=type; type = 0; } if(r/10>=1){ type = r/10; r -=10*(r/10); } re1[i][j+1]+=r; } // int t = 0; if(type>0){ re1[i][0]+=type; } } //字符串求和 int rlen = re1.length; int t1 = re1[rlen-1].length; int []result = new int[rlen + t1 -1]; Arrays.fill(result, -1); for (int i = 0; i < re1.length; i++) { for (int j = 0; j < re1[i].length-i; j++) { int g = re1[i][j]; if(result[j+i]==-1)result[j+i]=0; result[j+i]+=g; } } for (int i = result.length-1; i > 0; i--) { if(result[i]>=10){ result[i-1]+=result[i]/10; result[i]-=10*(result[i]/10); } } String resu = ""; int type =0; for (int i = 0; i <=result.length-1; i++) { if(type ==0&&result[i]==0){ continue; }else{ if(result[i]!=-1){ String t = String.valueOf(result[i]); resu = resu.concat(t); type =1;} } } if(resu.length()==0){ return "0"; } return resu; }
相关文章推荐
- 密码学学习笔记
- 数据库性能指标 2005-04-06 19:36:14(转载)
- struts2拦截器中 如果获取当前请求action 和请求的方法
- yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
- ansible动态inventory获取主机列表
- struts2 ,session失效,拦截器
- 个人常用iOS第三方库以及XCode插件介绍
- 瓷片电容容量 102 103 104 222 223 472 473 474 是多少
- Js 中json简单处理
- [bzoj1587] [Usaco2009 Mar]Cleaning Up 打扫卫生
- Hadoop学习笔记(十一)思维导图整理(附源文件)
- Spring quartz 任务调度器 启动加载,定时加载
- CAP理论十二年回顾:"规则"变了
- MATLAB GUI 通过点击控件关闭figure
- CAP理论十二年回顾:"规则"变了
- ITeye、CSTO站点升级公告
- EditText clearFocus
- Plupload js插件 使用pluploadQueue实例化uploader文件上传
- sql 中延迟执行
- C#邮件发送帮助类