Sum—LeetCode-43 Multiply Strings
2017-05-14 17:46
465 查看
题目描述:
Given two non-negative integers num1 andnum2 represented as strings, return the product ofnum1
and num2.
Note:
The length of both num1 andnum2 is < 110.
Both num1 andnum2 contains only digits
0-9.
Both num1 andnum2 does not contain any leading zero.
You must not use any built-in BigInteger library orconvert the inputs to integer directly.
思想:基本的乘法思想,见代码:
Given two non-negative integers num1 andnum2 represented as strings, return the product ofnum1
and num2.
Note:
The length of both num1 andnum2 is < 110.
Both num1 andnum2 contains only digits
0-9.
Both num1 andnum2 does not contain any leading zero.
You must not use any built-in BigInteger library orconvert the inputs to integer directly.
思想:基本的乘法思想,见代码:
public String multiply(String num1, String num2) { char[] chars1 = num1.toCharArray(); char[] chars2 = num2.toCharArray(); char[][] data = new char[num2.length()][num1.length() + num2.length()]; for(int m = 0; m < num2.length(); ++m){ for(int n = 0; n < num1.length() + num2.length(); ++n){ data[m] = '0'; } } int back = 0; for(int i = chars2.length - 1; i >= 0; --i){ int k = num1.length() + num2.length() - 1; int b = Integer.valueOf(String.valueOf(num2.charAt(i))); int c = 0; for(int j = chars1.length - 1; j >= 0; --j){ int a = Integer.valueOf(String.valueOf(num1.charAt(j))); int sum = a * b + c; c = sum / 10; data[i][k - back] = String.valueOf(sum % 10).charAt(0); --k; } if(c != 0){ data[i][k - back] = String.valueOf(c).charAt(0); } ++back; } return addArray(data); } private String addArray(char[][] data) { int c = 0; int row = data.length, col = data[0].length; int k = col; char resChar[] = new char[col + 1]; for(int p = 0; p < col + 1; ++p) { resChar[p] = '0'; } for(int i = col - 1; i >= 0; --i) { int sum = 0; for(int j = 0; j < row; ++j) { sum += Integer.valueOf(String.valueOf(data[j][i])); } sum += c; resChar[k] = String.valueOf(sum % 10).charAt(0); c = sum / 10; --k; } int startIndex = 0, flag = 0; for(int m = 0; m < resChar.length; ++m){ if(resChar[m] != '0'){ startIndex = m; flag = 1; break; } } if(c != 0) { resChar[startIndex - 1] = String.valueOf(c).charAt(0); --startIndex; } if(flag == 0){ return "0"; } return String.valueOf(resChar).substring(startIndex); }
相关文章推荐
- leetcode 43. Multiply Strings
- Leetcode 43. Multiply StringsI
- LeetCode 43 Multiply Strings(高精度乘法)
- 【leetcode】【43】Multiply Strings
- LeetCode 43. Multiply Strings
- Leetcode 43. Multiply Strings
- LeetCode 43 Multiply Strings
- [Leetcode]#43 Multiply Strings
- leetcode(43)Multiply Strings
- LeetCode(43)Multiply Strings
- LeetCode - 43. Multiply Strings
- leetcode 43: Multiply Strings
- Leetcode 43 Multiply Strings
- LeetCode43 Multiply Strings
- LeetCode(43)Multiply Strings
- LeetCode(43) Multiply Strings
- leetcode43 Multiply Strings
- LeetCode_43---Multiply Strings
- leetcode-43 Multiply Strings
- leetcode 43: Multiply Strings