【leetcode】【43】Multiply Strings

来源:互联网 发布:视觉传达设计网络培训 编辑:程序博客网 时间:2024/05/24 05:58

一、问题描述

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.

二、问题分析

参考的这里

Remember how we do multiplication?

Start from right to left, perform multiplication on every pair of digits, and add them together. Let's draw the process! From the following draft, we can immediately conclude:

 `num1[i] * num2[j]` will be placed at indices `[i + j`, `i + j + 1]` 


Multiplication


三、Java AC代码

public String multiply(String num1, String num2) {int len1 = num1.length();int len2 = num2.length();int[] pos = new int[len1+len2];for (int i = len1-1; i >= 0; i--) {for (int j = len2-1; j >= 0; j--) {int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');int p1 = i + j, p2 = i + j + 1;//p2 save the remainder, p1 save the carry            int sum = mul + pos[p2];            pos[p1] += sum / 10;            pos[p2] = (sum) % 10;}}StringBuilder sb = new StringBuilder();for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);    return sb.length() == 0 ? "0" : sb.toString();}


0 0
原创粉丝点击