欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

43. Multiply Strings

程序员文章站 2022-03-23 13:13:16
...

原题链接:https://leetcode.com/problems/multiply-strings/

突然发现外国友人的格子乘法做这道题更简单。

每一步先算较高位,再更新低位,省去了保存进位的麻烦。

43. Multiply Strings
格子乘法示例

 

对于两个String而言,从后向前,依次更新   倒数第二位.倒数第一位   .......然后倒数第三位.倒数第二位 .......

因为本次更新较高位时已经把较低位的值算上,所以进位直接可以计算,无须保存。

AC 13ms:

class Solution {
    public String multiply(String num1, String num2) {
        if(num1.length()==0||num2.length()==0)
            return "";
        int[] num=new int[num1.length()+num2.length()];
        for(int i=num1.length()-1;i>=0;i--)
            for(int j=num2.length()-1;j>=0;j--){
                int temp=(num1.charAt(i)-'0')*(num2.charAt(j)-'0');
                num[i+j]+=(num[i+j+1]+temp)/10;
                num[i+j+1]=(num[i+j+1]+temp)%10;
            }
        StringBuilder sb=new StringBuilder();
        for(int i : num){
            if(sb.length()==0&&i==0)
                continue;
            sb.append(i);
        }   
        return sb.length()==0?"0":sb.toString();
    }
}