zoukankan      html  css  js  c++  java
  • Multiply Strings

    Given two numbers represented as strings, return multiplication of the numbers as a string.

    Note: The numbers can be arbitrarily large and are non-negative.

    这道题主要是考大数相乘

    思路

    将两个字符串转换成整型数组保存,用一个整型数组保存相乘的结果。这道题测试用例没有小数,不用考虑小数的问题。降低了难度

     1 public class Solution {
     2     public String multiply(String num1, String num2) {
     3         final int SIZE = 500;
     4         int array_num1[] = new int[num1.length()];
     5         int array_num2[] = new int[num2.length()];
     6         int array_result[] = new int[SIZE];    //保存大数相乘的结果
     7         
     8         strToNum(num1, array_num1);            //字符串转换成int[]
     9         strToNum(num2, array_num2);
    10         
    11         for(int i = 0; i < array_num1.length; i++){
    12             for(int j = 0; j < array_num2.length; j++){
    13                 array_result[i + j] += array_num1[i] * array_num2[j];
    14             }
    15         }                                    //从低位按位相乘,结果保存到array_result[]数组中
    16         int length = array_result.length;
    17         while(length > 0 && array_result[--length] == 0);
    18         
    19         //进位处理
    20         for(int i = 0; i <= length; i++){
    21             array_result[i + 1] += array_result[i] / 10;        //进位
    22             array_result[i] = array_result[i] % 10;
    23         }//for
    24         length = SIZE;
    25         while(length > 0 && array_result[--length] == 0);
    26         String result = "";
    27         for(int i = length; i >= 0; i--){
    28             result += array_result[i];
    29         }//for
    30         
    31         return result;
    32     }
    33     /**
    34      * 字符串转换成整型数组
    35      * @param str
    36      * @param nums
    37      */
    38     private void strToNum(String str, int nums[]){
    39         //nums[0]存放的是最低位
    40         for(int i = str.length() - 1; i >= 0; i--){
    41             nums[str.length() - i - 1] = str.charAt(i) - '0';
    42         }
    43     }
    44 }

    有关大数相乘,可以参考我的博客:

    java版大数相乘

  • 相关阅读:
    STL--set_difference
    priority_queue和sort应用
    16进制转化8进制---map
    LeetCode62. 不同路径
    LeetCode209. 长度最小的子数组
    LeetCode第29场双周赛题解
    LeetCode61. 旋转链表
    LeetCode60. 第k个排列
    LeetCode59. 螺旋矩阵 II
    LeetCode58. 最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4244405.html
Copyright © 2011-2022 走看看