leetcode-43 Multiply Strings
2015-10-10 20:44
393 查看
问题描述:
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.
问题分析:
问题难点在于该字符串表示的数字可能是无穷大的;
采用最基础的按十位进行逐位相乘,进位叠加的方法,需要注意相应为位坐标即可;
![](https://img-blog.csdn.net/20151010204326848)
代码:
public class Solution {
public String multiply(String num1, String num2) {
//实现平常的乘法运算即可
int[] resnums = new int[num1.length() + num2.length()];
for(int i = num1.length() - 1; 0 <= i; i--) {
// 进位
int carry = 0;
for (int j= num2.length() - 1; 0 <= j; j--) {
resnums[i + j + 1] += ((num1.charAt(i) - '0') * (num2.charAt(j) - '0') +carry);
carry = resnums[i + j + 1] / 10;
resnums[i + j + 1] %= 10;
}
// 不要忽略了最后的进位
resnums[i] += carry;
}
StringBuffer buffer = new StringBuffer();
boolean isZero = true;
//去除零位
for(int i = 0; i < resnums.length; i++) {
if (resnums[i] == 0 && isZero)
continue;
buffer.append(resnums[i]);
isZero = false;
}
return buffer.length() > 0 ? buffer.toString() : "0";
}
}
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.
问题分析:
问题难点在于该字符串表示的数字可能是无穷大的;
采用最基础的按十位进行逐位相乘,进位叠加的方法,需要注意相应为位坐标即可;
代码:
public class Solution {
public String multiply(String num1, String num2) {
//实现平常的乘法运算即可
int[] resnums = new int[num1.length() + num2.length()];
for(int i = num1.length() - 1; 0 <= i; i--) {
// 进位
int carry = 0;
for (int j= num2.length() - 1; 0 <= j; j--) {
resnums[i + j + 1] += ((num1.charAt(i) - '0') * (num2.charAt(j) - '0') +carry);
carry = resnums[i + j + 1] / 10;
resnums[i + j + 1] %= 10;
}
// 不要忽略了最后的进位
resnums[i] += carry;
}
StringBuffer buffer = new StringBuffer();
boolean isZero = true;
//去除零位
for(int i = 0; i < resnums.length; i++) {
if (resnums[i] == 0 && isZero)
continue;
buffer.append(resnums[i]);
isZero = false;
}
return buffer.length() > 0 ? buffer.toString() : "0";
}
}
相关文章推荐
- Linux 创建信任机制
- 输入一个字符串,求出该字符串包含的字符集合
- Python:Pandas学习笔记(1)
- 新旧xcode共存方法
- 组合数学 集锦
- node-lessons
- 深入理解OpenGL拾取模式(OpenGL Picking)转载收藏
- 如何在两个Activity之间传递数据?
- ACM学习历程—HDU4675 GCD of Sequence(莫比乌斯)
- build.gradle 文件
- 采用合适白盒测试
- nodejs API笔记
- mysql服务常用命令
- 淡定
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
- 快排模板
- C++学习笔记16——成员函数
- 一款测试接口的好插件
- struts 2配置两种的结果