当前位置: 首页 > news >正文

[leetcode] Multiply Strings

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.
 
 
分析:
模拟手算乘法即可。分两部分:字符串的乘法,字符串的加法。
 
例如:
          99
*         12
------------------
         198
+        99
------------------
         297
 
 1 class Solution
 2 {
 3 public:
 4   string add(string num1, string num2)
 5   {
 6     string ret = "";
 7     int flag = 0, temp = 0;
 8     int i = num1.size() - 1, j = num2.size() - 1;
 9 
10     for(; i >= 0 || j >= 0; --i, --j)
11     {
12       if(i >= 0 && j >= 0)
13         temp = num1[i] - '0' + num2[j] - '0' + flag;
14       else if(i >= 0 && j < 0)
15         temp = num1[i] - '0' + flag;
16       else
17         temp = num2[j] - '0' + flag;
18 
19       flag = temp / 10;
20       temp = temp % 10;
21       ret.insert(ret.begin(), '0' + temp);
22     }
23 
24     if(flag == 1)
25       ret.insert(ret.begin(), '1');
26 
27     return ret;
28   }
29   
30 public:
31   string multiply(string num1, string num2)
32   {
33     if(num1 == "0" || num2 == "0")
34       return "0";
35 
36     string ret = "", str = "";
37     int i = 0, j = 0, temp = 0, flag = 0;
38 
39     for(j = num2.size()-1; j>=0; --j)
40     {
41       str = "";
42       flag = 0;
43       for(i = num1.size()-1; i>=0; --i)
44       {
45         temp = (num1[i] - '0') * (num2[j] - '0') + flag;
46         flag = temp / 10;
47         temp = temp % 10;
48         str.insert(str.begin(), temp + '0');
49       }
50       if(flag > 0)
51         str.insert(str.begin(), flag + '0');
52       
53       for(int k = j; k < num2.size()-1; k++)
54         str += "0";
55       
56       ret = add(str, ret);
57     }
58 
59     return ret;
60   }
61 };

 

 

 
 

转载于:https://www.cnblogs.com/lxd2502/p/4269987.html

相关文章:

  • 微信公众平台开发学习笔记1--验证服务器地址的有效性
  • jquery uploadify上传文件插件导致浏览器崩溃问题解决方法
  • Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的
  • FireDAC 之FDMetaInfoQuery
  • GIT操作笔记
  • DevExpress随笔系列
  • 4.2 HTML Canvas标签
  • java对象占用内存大小计算方式
  • iOS开发之oc(六)--点语法
  • Sample SecondarySort 浅析
  • 导入项目时Loading descriptor ...
  • 【BZOJ】【2940】【POI2000】条纹
  • IOS开发基础知识--碎片8
  • 远程debug WebSphere 和 Watch时提示error(s)_during_the_evaluation
  • javascirpt怎样模仿块级作用域(js高程笔记)
  • [译] 怎样写一个基础的编译器
  • 2017届校招提前批面试回顾
  • JAVA SE 6 GC调优笔记
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP CLI应用的调试原理
  • Python实现BT种子转化为磁力链接【实战】
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 程序员该如何有效的找工作?
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 试着探索高并发下的系统架构面貌
  • 一些关于Rust在2019年的思考
  • 自定义函数
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 整理一些计算机基础知识!
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #etcd#安装时出错
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $(selector).each()和$.each()的区别
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (solr系列:一)使用tomcat部署solr服务
  • (二十四)Flask之flask-session组件
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十)T检验-第一部分
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ./configure、make、make install 命令
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 反射的使用