zoukankan      html  css  js  c++  java
  • Multiply Strings

         123

      *           45

         615

      +       492  

    =             5535

    public class Solution {
        public String multiply(String num1, String num2) {
            int l1 = num1.length();
            int l2 = num2.length();
            
            int[] num = new int[l1 + l2 + 1];
            for(int i = 0; i <= l2 - 1; i ++){
                int carry = 0;
                int a = num2.charAt(l2 - 1 - i) - '0';
                for(int j = 0; j <= l1 - 1; j ++){
                    int b = num1.charAt(l1 - 1 - j) - '0';
                   //这里的 num[i+j] 是因为下面的 num[i + l1] = carry;也就是 num2的 
                  //第一位成完的后的num1最高位又向前进了一位, 注意还要把之前的进位加上
                    num[i + j] =num[i+j]+  a * b + carry;
                    carry = num[i + j] / 10;
                    num[i + j] = num[i + j] % 10;
                }
                // 123*9 carry add to the left side of digit '1'
                num[i + l1] = carry;
            }
            
            // 100 * 1 = 00100 把00100 转换为 100。
            int i  = num.length -1;
    // 这里 i>0, 因为 ) 0*0=0 还要保留最后一位0
    while( i > 0 && num[i] == 0){ i--; } StringBuilder sb = new StringBuilder(); // 得到的num数组是低位在前 这又把数组倒过来。 这里是“>=”号, 因为 0*0 = 0, 要取到最后一位0。 while(i >= 0){ sb.append(num[i--]); } return sb.toString(); } }
  • 相关阅读:
    PHP学习——数组处理函数(一)
    PHP与MySQL的连接
    c语言:<tchar.h>
    PHP数组(二)
    PHP数组(一)
    PHP基础知识(三)
    Git和GitHub
    PHP基础知识(二)
    js 全选和反选(复选框)
    python 字典之删除
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3533645.html
Copyright © 2011-2022 走看看