zoukankan      html  css  js  c++  java
  • 大整数相乘

     思路:先每位相乘,之后统一%10进位

    例子:123*456

    4   5   6

         8   10   12

               12  15  18

    ---------------------------------

    4 (13) (28) (27)(18)

    统一进位:

    5  6     0     8       8

    最终结果:56088

    class Solution {
        public String multiply(String num1, String num2) {
            int num1Len = num1.length(),num2Len = num2.length();
            int[] res = new int[num1Len+num2Len];//辅助空间
            int resSize = num2Len+num1Len-2;
            for(int i=0;i<num1Len;i++){
                for(int j=0;j<num2Len;j++){
                    //这里i+j相等就是在竖式一列
                    res[i+j] += (num1.charAt(i) - '0')*(num2.charAt(j) - '0');
                }
            }
            for(int i=resSize;i>=1;i--){//进位
                 int tmp = res[i];
                 res[i] = res[i] % 10;
                 res[i-1] += tmp / 10;
            }
            if(res[0] == 0) return "0";//判断乘的结果是否是0
            StringBuilder ans = new StringBuilder("");
            for(int i=0;i<=resSize;i++){
                ans.append(res[i]);
            }
            return ans.toString();
        }
    }    

    不一样的烟火
  • 相关阅读:
    Unix高级编程之文件权限
    gdb手册
    libev 使用
    Unix高级环境编程之fcntl函数
    设计基于锁的并发数据结构
    CPU占用分析
    atomic用法
    RESTful架构搜集
    神奇的VIM
    [转] boost:lexical_cast用法
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10884174.html
Copyright © 2011-2022 走看看