zoukankan      html  css  js  c++  java
  • 字符串相乘

     题目描述:

    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();
        }
    }
    

      

  • 相关阅读:
    MCU开发之I2C通信
    hibernate特殊的映射
    Hibernate使用
    css设置让a标签充满整个li
    margin
    border属性
    列表
    链接样式
    相机内参外参
    tmux
  • 原文地址:https://www.cnblogs.com/theWinter/p/10542411.html
Copyright © 2011-2022 走看看