码迷,mamicode.com
首页 > 其他好文 > 详细

字符串相乘

时间:2019-03-16 15:34:24      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:结果   public   位置   字符   img   multi   div   --   return   

 题目描述:

技术图片

 

class Solution {
    public String multiply(String num1, String num2) {
        /*
            问题的精华在于,乘积在数组中的位置,下标为i的被乘数,乘以下标为j的乘数,数字总是存在
            下标i+j+1的位置上。123*456 中,2*5的结果存在数组的1+1+1 = 3即下标为3的位置。
        */
        int n1 = num1.length()-1;
        int n2 = num2.length()-1;
        if(n1 < 0 || n2 < 0) return "";
        int[] mul = new int[n1+n2+2];
        for(int i = n1;i>=0;i--){
            for(int j = n2; j>=0;j--){
                
            //算进位
            mul[i+j] +=   ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])/10;
            //本位置的值
            mul[i+j+1] = ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])%10;
                
              
            }
        }
        
        
        StringBuilder sb = new StringBuilder();
        int i = 0;
       
        while(i < mul.length-1 && mul[i] == 0) 
            i++;
        for(; i < mul.length; ++i)
            sb.append(mul[i]);
        return sb.toString();
    }
}

  

字符串相乘

标签:结果   public   位置   字符   img   multi   div   --   return   

原文地址:https://www.cnblogs.com/theWinter/p/10542411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!