【大数乘法】Multiply Strings

来源:互联网 发布:mac mini 2012 双硬盘 编辑:程序博客网 时间:2024/06/07 01:27

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.

如果要增加难度的话,需要考虑是否带有符号的情况

public class Solution {    public String multiply(String num1, String num2) {        if(num1 == null || num2 == null) return "";                int len1 = num1.length();        int len2 = num2.length();        int len3 = len1 + len2;        int []num3 = new int[len3];                for(int i=len1-1; i>=0; i--){//从个位开始乘            int a = num1.charAt(i) - '0';            for(int j=len2-1; j>=0; j--){                int b = num2.charAt(j) - '0';                num3[len3 - i -j -2] += a * b;//将相应的位对应            }        }                StringBuilder sb = new StringBuilder();        for(int i=0; i<len3; i++){            int x = num3[i] / 10;            int y = num3[i] % 10;            if(i+1 < len3) num3[i+1] += x;            sb.insert(0, y);//依次从头插入        }        while (sb.length() > 0 && sb.charAt(0) == '0') {            sb.deleteCharAt(0);        }        return sb.length() == 0 ? "0" : sb.toString();    }}


0 0
原创粉丝点击