1. 程式人生 > 其它 >字串相乘(大數相乘)

字串相乘(大數相乘)

技術標籤:# 數學與建模字串leetcode演算法

用兩個指標在字串上移動來模擬豎式乘法
首先一個字串的最低位乘另一個字串的最低位,然後另一個字串的指標移動,乘後得到另一個數字,如果一個數字的指標是i,另一個數字為j,則他們相加得到的res的位數是i+j和i+j+1這兩位
真的比其他簡單好多。

class Solution {
    public String multiply(String num1, String num2) {
        if(num1.equals("0") || num2.equals("0"))return "0"
; int m=num1.length(); int n=num2.length(); if(m==0 || n==0)return "0"; int[] res=new int[m+n]; for(int i=m-1;i>=0;i--){ for(int j=n-1;j>=0;j--){ int mul=(num1.charAt(i)-'0')*(num2.charAt(j)-'0'); int p1=i+j,p2=
i+j+1; int sum=mul+res[p2]; res[p2]=sum%10; res[p1]+=sum/10; } } StringBuilder sb=new StringBuilder(); int i=0; while(res[i]==0){ i++; } while(i<res.length){ sb.append(res[
i]); i++; } return sb.toString(); } }