LeetCode: Multiply Strings 解题报告

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.

SOLUTION 1:

参考自http://blog.csdn.net/fightforyourdream/article/details/17370495

相当优雅的算法,主页君稍微改进,把翻转String这一步拿掉了。比起一般的做法,这个算法很容易就BUG FREE.

思路:
1 建立数组,双层循环遍历两个string,把单位的乘积累加到数组相应的位置
2 处理进位并输出
3 注意前导零的corner case

 1 public class Solution {
 2     public String multiply(String num1, String num2) {
 3         if (num1 == null || num2 == null) {
 4             return null;
 5         }
 6
 7         int len1 = num1.length();
 8         int len2 = num2.length();
 9
10         int[] product = new int[len1 + len2];
11
12         // 计算相应位置的product.
13         for (int i = 0; i < len1; i++) {
14             for (int j = 0; j < len2; j++) {
15                 // 注意,这里要使用+=以不断累加乘积
16                 product[i + j] += (num1.charAt(len1 - 1 - i) - ‘0‘) * (num2.charAt(len2 - 1 - j) - ‘0‘);
17             }
18         }
19
20         StringBuilder ret = new StringBuilder();
21
22         int carry = 0;
23         // 计算进位
24         for (int i = 0; i < len1 + len2; i++) {
25             product[i] = product[i] + carry;
26             int digit = product[i] % 10;
27             carry = product[i] / 10;
28             ret.insert(0, digit);
29         }
30
31         // 去掉前导0
32         while (ret.length() > 1 && ret.charAt(0) == ‘0‘) {
33             ret.deleteCharAt(0);
34         }
35
36         return ret.toString();
37     }
38 }

请至主页群GITHUB:

https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/string/Multiply.java

时间: 2024-11-22 21:45:28

LeetCode: Multiply Strings 解题报告的相关文章

【LeetCode】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. [解析] 题意:两个字符串表示的非负整数相乘,用字符串的形式返回积. 思路:逐位相乘. 关键:中间结果如何保存?如果用字符串保存中间结果,频繁该值不太方便,所以还是用整数数组保

[leetcode]Isomorphic Strings 解题报告 C语言

[题目] Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the characters in s can be replaced to get t. All occurrences of a character must be replaced with another character while preserving the order of charact

[leetcode]Multiply Strings @ Python

原题地址:https://oj.leetcode.com/problems/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. 解题思路:两个非负数字字符串的相乘.其实就是大数乘法.算法的关键是

LeetCode: Multiply Strings [042]

[题目] 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. [题意] 给定用字符串表示的整数,返回两个数的乘积结果字符串.两个数字都非负,且能任意大. [思路] 1. 考虑其中一个数是0的情况 2. 模拟乘法运算过程 维护一个vecto

LeetCode: Combination Sum 解题报告

Combination Sum Combination Sum Total Accepted: 25850 Total Submissions: 96391 My Submissions Question Solution Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. The

[LeetCode]LRU Cache, 解题报告

题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.

【LeetCode】Subsets 解题报告

[题目] Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,3], a solution is: [ [3], [1], [2], [1,2,

leetcode Multiply Strings

题目连接 https://leetcode.com/problems/multiply-strings/ Multiply Strings Description 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. 普通写法: class

LeetCode——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. 原题链接:https://oj.leetcode.com/problems/multiply-strings/ 按照乘法原理,从个位开始一位一位相乘相加. public class Mu