博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Multiply Strings. Java
阅读量:5831 次
发布时间:2019-06-18

本文共 2066 字,大约阅读时间需要 6 分钟。

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) {        int n = num2.length();        String[] addS = new String[n];        for(int i = 0; i < n; i++){            addS[i] = multiplyChar(num1, num2.charAt(i), n-1-i);        }        String res = sum(addS);        int p = 0;        while(p < res.length() && res.charAt(p) == '0')        	p++;        if(p == res.length())        	return "0";        else         	return res.substring(p);    }        public String multiplyChar(String num, char c, int digits){        int n = num.length();        char[] res = new char[n + 1];        int add = 0;        for(int i = n; i >= 0; i--){            int b = 0;            if(i-1 >= 0)                b = num.charAt(i-1)-'0';            int cur = b*(c-'0')+add;            add = cur / 10;            cur %= 10;            res[i] = (char)(cur+'0');        }        int p = 0;        while(p <= n && res[p] == '0')            p++;        if(p == n + 1)        	return "0";        else{            StringBuffer sb = new StringBuffer();            for(int i = 0; i < digits; i++){                sb.append('0');            }        	return new String(res, p, n-p+1) + sb.toString();        }    }        public String sum(String[] s){        StringBuffer res= new StringBuffer();        int p = 0;        int cur = 0;        int add = 0;        int maxLength = 0;        for(int i = 0; i < s.length; i++){            maxLength = Math.max(maxLength, s[i].length());        }        do{        	cur = 0;            for(int i = 0; i < s.length; i++){                if(p < s[i].length())                    cur += s[i].charAt(s[i].length()-1-p)-'0';            }            cur += add;            res.append(cur%10);            add = cur / 10;            p++;        }        while(cur != 0 || p < maxLength);        return new String(res.reverse());    }}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
nvl 在mysql中如何处理
查看>>
MyEclipse 快捷键
查看>>
快速傅里叶变换FFT
查看>>
大数据常用基本算法
查看>>
JavaScript学习笔记(十三)——生成器(generator)
查看>>
hibernate保存失败
查看>>
MySQL增量订阅&消费组件Canal POC
查看>>
Sqlite多线程
查看>>
数据结构-时间复杂度
查看>>
对象与字符串相互转换
查看>>
[NOIp2017提高组]小凯的疑惑
查看>>
《C程序设计语言》练习1-5
查看>>
$\frac{dy}{dx}$ 是什么意思?
查看>>
Go开发之路(目录)
查看>>
RHEL6.5安装成功ORACLE11GR2之后,编写PROC程序出错解决方法
查看>>
(50)与magento集成
查看>>
Ubuntu设置python3为默认版本
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>
JavaSE-代码块
查看>>