(Java)LeetCode-43. Multiply Strings

来源:互联网 发布:免费杀毒软件 知乎 编辑:程序博客网 时间:2024/06/16 06:05

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.
  • Converting the input string to integer is NOT allowed.

  • You should NOT use internal library such as BigInteger.

这道题蛮简单的,算两个大数的乘法,模拟手算时的竖式计算即可,需要做MN次乘法和若干次加法,需要耐心~代码如下:

public class Solution {    public String multiply(String num1, String num2) {int len1 = num1.length();int len2 = num2.length();if(num1.equals("0")|| num2.equals("0"))    return "0";int len = len1 + len2-1;int carry = 0;int temp = 0, templeft = 0, tempright = 0;int sum = 0;Stack<Integer> st = new Stack<Integer>();for(int i = 1; i <= len; i++){for(int j = 1; j <= i; j++){if( i+1-j > len2 || j > len1){continue;}templeft = Integer.parseInt(num1.substring(len1-j, len1-j+1)); tempright = Integer.parseInt(num2.substring(len2-1-i+j, len2-i+j));temp = templeft * tempright;sum = temp + sum;}sum +=carry;st.push(sum % 10);carry = sum/10;sum = 0;}while(carry != 0){st.push(carry % 10);carry /= 10;}StringBuilder sb = new StringBuilder();while(!st.isEmpty()){sb.append(st.pop());}return sb.toString();    } }


0 0
原创粉丝点击