LeetCode 43: Multiply Strings
2017-08-22 14:29
375 查看
class Solution { public String multiply(String num1, String num2) { if (num1 == null || num2 == null || num1.length() == 0 || num2.length() == 0 || num1.equals("0") || num2.equals("0")) { return "0"; } int length = num1.length() + num2.length(); int[] multi = new int[length]; Map<Integer, Integer> carry = new HashMap<>(); int i = num1.length() - 1; for (; i >= 0; i--) { for (int j = num2.length() - 1; j >= 0; j--) { int current = (int)(num1.charAt(i) - '0') * (int)(num2.charAt(j) - '0') + carry.getOrDefault(i + j + 1, 0) + multi[i + j + 1]; carry.put(i + j + 1, 0); multi[i + j + 1] = current % 10; carry.put(i + j, carry.getOrDefault(i + j, 0) + current / 10); if (i == 0 && j == 0 && carry.get(0) > 0) { multi[0] = carry.get(0); } } } boolean flag = true; StringBuilder sb = new StringBuilder(); for (i = 0; i < length; i++) { if (multi[i] == 0 && flag) { continue; } else { flag = false; sb.append((char)(multi[i] + '0')); } } return sb.toString(); } }
1. Multiplication length are sum of two lengths.
2. Multiplied value should be ADDED to the position not REPLACE since there could be other places multiplied to.
3. Remember to clear the map since the position is not one time reach.
4. Check the first value as the value is not counted in multi array.
相关文章推荐
- LeetCode 43题之 Multiply Strings
- Leetcode 43 Multiply Strings
- Leetcode 43. Multiply StringsI
- Leetcode:43. Multiply Strings
- LeetCode 43 - Multiply Strings
- Leetcode Multiply Strings 43
- leetcode || 43、Multiply Strings
- 【leetcode 43】--------Multiply Strings
- ★leetcode43_Multiply Strings
- [Leetcode 43, medium] Multiply Strings
- leetcode(43)Multiply Strings
- LeetCode(43) Multiply Strings
- LeetCode 43 Multiply Strings
- Leetcode43 Multiply Strings
- leetcode43 Multiply Strings
- leetcode-43 Multiply Strings
- [LeetCode 43] Multiply Strings
- leetcode(43) - Multiply Strings
- LeetCode43_Multiply Strings
- LeetCode 43. Multiply Strings