博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leedcode 43] Multiply Strings
阅读量:4978 次
发布时间:2019-06-12

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

Straight forward idea. Just like the way we multiply numbers. Don't forget considering the carry and be careful. e.g.

  123*456,
what we usually do is:
      123
*    456
-----------
      738
    615
+492
-----------
  56088
thus, 123*456 = 56088.
In the same way, the algorithm is:

from end to start position, use a new array to store temproary digit.

A*B
(1)For each element B[i]
    Compute tmp = B[i]*A
    Add tmp to the previous result, note the start position. res = res"+"tmp
(2)Return result.
To be specific,
(1) char2int,     int(char-'0');
(2) int2char,     char(int+'0')
(3) Don't forget the carry in each add or multiply operation.
(4) Don't forget the carry after last operation. e.g.  82+33 = 115.
(5) Be careful with the string order and the number order.

public class Solution {    public String multiply(String num1, String num2) {        //用字符串模拟乘法,注意事项见上面分析。注意result的第0位是结果的个位                int len1=num1.length();        int len2=num2.length();        int[] result=new int[len1+len2];        int carry=0;        int i=0;        int j=0;        for( i=0;i
0){ if(result[i]!=0) break; i--; } StringBuilder res=new StringBuilder(); int k=i; while(k>=0){ res.append((char)(result[k]+'0'));//res.append(result[k]+'0');会得整数,比如result[k]为0时,添加的是48 k--; } return res.toString(); }}

 

转载于:https://www.cnblogs.com/qiaomu/p/4637615.html

你可能感兴趣的文章
JSP之request表单的两种提交及乱码处理
查看>>
修改UITableView titleForHeader 的风格样式
查看>>
iOS 之sdwebimage
查看>>
Spring Boot 2 快速教程:WebFlux 快速入门(二)
查看>>
ASP.NET XML与JSON
查看>>
java程序员面试----交流项目经验(摘自百度)
查看>>
01-语言入门-01-A+B Problem
查看>>
冒泡排序--c#
查看>>
Wi-Fi与WAPI主要区别
查看>>
Git详解之六:Git工具
查看>>
一个好用的PHOTOSHOP切图插件(CutterMan插件下载)
查看>>
android 引入开源项目
查看>>
《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(下)
查看>>
js 自定义方法 设置可选参数的方法
查看>>
Oracle分页查询
查看>>
Python + 装饰器 + @
查看>>
FormsAuthentication.RedirectFromLoginPage 登录
查看>>
2012.05.16
查看>>
前端自动化测试之UI RECORDER(二、PC录制)
查看>>
Linq基本查询操作--帅选
查看>>