• 43. Multiply Strings


    一、题目

      1、审题

      2、分析:

        给定两个字符串,字符串形式为非负整数。在不使用 BigInteger 以及不把其转为 int 形式下 求该两数的乘积,返回结果为字符串。

    二、解答

      1、思路:

        

      分析可知,num1 下标为 i 的数字与 num2 下标为 j 的数字相乘,所得的乘积为二位数字,且所在下标为新数组的下标为 i+j, i+j+1 两个位置。故可以用新数组存下两数的乘积。

    public String multiply(String num1, String num2) {
            
            int len1 = num1.length();
            int len2 = num2.length();
            if(len1 == 0 || len2 == 0
                    || num1.equals("0") || num2.equals("0")) 
                return "0";
            int[] arr = new int[len1 + len2];
            for (int i = len1 - 1; i >= 0; i--) {
                for (int j = len2 - 1; j >= 0; j--) {
                    
                    int index1 = i + j;
                    int index2 = i + j + 1;
                    int num = (num1.charAt(i) - '0') * (num2.charAt(j) - '0') + arr[index2];
                    arr[index2] = num % 10;
                    arr[index1] += num / 10;
                }
            }
            
            StringBuffer sb = new StringBuffer();
            if(arr[0] != 0)
                sb.append(arr[0]);
            for (int i = 1; i < arr.length; i++) {
                sb.append(arr[i]);
            }
            return sb.toString();
        }
  • 相关阅读:
    Arraw function
    constructor&object 的联系与对比
    for each in&for in&for of
    编程历史
    正则表达式
    DOM&BOM
    关于码云0095的一篇文章。
    vue2路由导航守卫(钩子函数)
    原声ajax请求数据
    express 创建项目
  • 原文地址:https://www.cnblogs.com/skillking/p/9608315.html
Copyright © 2020-2023  润新知