给定两个以字符串形式表示的非负整数 num1 和  num2 ,返回  num1 和  num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

输入: num1 = "2", num2 = "3"

输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"

输出: "56088"

说明:

num1  和  num2  的长度小于110。

num1  和  num2  只包含数字  0-9 。

num1  和  num2  均不以零开头,除非是数字 0 本身。

不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

从题目要求来看,应该是让我们实现一个比较省内存的大数乘法,先分享几个我在discuss中发现的不太切合题意的解法:

class Solution:

def multiply(self, num1, num2):

"""

:type num1: str

:type num2: str

:rtype: str

"""

return str(eval(num1+'*'+num2))

这个可以说是个毫无技术含量的解法,如果面试的时候掏出这种解法,八成是跪了。

还有很多人使用了以下的解法。

class Solution:

def multiply(self, num1, num2):

"""

:type num1: str

:type num2: str

:rtype: str

"""

dict = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}

if (num1=='0' or num2=='0'):

return "0"

n1 = 0

n2 = 0

for c in num1:

val = dict[c]

n1 = n1*10 + val

for s in num2:

val = dict[s]

n2 = n2*10 + val

result = n1 * n2;

return str(result)

这种解法我觉得还是没有切合题意,将注意力放在的字符串转数字上,乘法还是使用的*。题目要求不能将输入直接转成数字类型,解体人自己实现了int方法完成了字符串的转换,好像是符合要求,但有投机取巧的感觉。

我来分享一下我的解法,思路很简单也很好理解,当我们徒手计算222*11时我们怎么计算呢,肯定是分解成222+2220来计算的,那么我们就可以使用一个一维列表来记录计算结果11分解成10+1,第一轮计算列表的结果为[0, 2, 2, 2],第二轮计算后变为[2, 2+2, 2+2, 2]计算结束。如果需要进位的话,进位的计算放到最后一步。

class Solution(object):

def multiply(self, num1, num2):

"""

:type num1: str

:type num2: str

:rtype: str

"""

if num1 == "0" or num2 == "0":

return "0"

num1 = num1[::-1]

num2 = num2[::-1]

str_list = [0 for _ in range(len(num1)+len(num2))]

for i in range(len(num1)):

for j in range(len(num2)):

str_list[i+j] += (int(num1[i])*int(num2[j]))

result = ""

up = 0

for i in str_list:

now = i + up

cur = now % 10

up = now / 10

result += str(cur)

begin = 0

result = result[::-1]

for i in result:

if i == "0":

begin += 1

else:

break

return result[begin:]

本文标题: python leetcode 字符串相乘实例详解

本文地址: http://www.cppcns.com/jiaoben/python/238863.html

python中字符串乘法_python leetcode 字符串相乘实例详解相关推荐

  1. python url解码_对python中url参数编码与解码的实例详解

    一.简介 在python中url,对于中文等非ascii码字符,需要进行参数的编码与解码. 二.关键代码 1.url编码 对字符串编码用urllib.parse包下的quote(string, saf ...

  2. python 正则式替换_python 正则表达式参数替换实例详解

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  3. python多进程应用场景_python使用多进程的实例详解

    python多线程适合IO密集型场景,而在CPU密集型场景,并不能充分利用多核CPU,而协程本质基于线程,同样不能充分发挥多核的优势. 针对计算密集型场景需要使用多进程,python的multipro ...

  4. python的scatter函数_python scatter函数用法实例详解

    这篇文章主要介绍了python scatter函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数功能:寻找变量之间的关系. 调用签 ...

  5. Python中各种下划线使用总结和实例详解

    Python中经常出现各种单下划线,双下划线,而且有的在前有的在后,有的是约定俗成的用法,有的则会强制对外隐藏.这一篇我们就一起来把各种下划线的用法说清楚. 我是T型人小付,一位坚持终身学习的互联网从 ...

  6. python中bytearray函数_python函数之bytearray用法详解

    bytearray([source [, encoding [, errors]]]) 中文说明: bytearray([source [, encoding [, errors]]])返回一个byt ...

  7. python中dir用法_Python内置函数dir详解

    1.命令介绍 最近学习并使用了一个python的内置函数dir,首先help一下: >>> help(dir) Help on built-in function dir in mo ...

  8. python中range 函数_Python range()函数用法图文详解

    python内置range()函数的作用是什么?它能返回一系列连续增加的整数,它的工作方式类似于分片,可以生成一个列表对象.range函数大多数时常出现在for循环中,在for循环中可做为索引使用.其 ...

  9. python中config命令_python的logging.config使用详解

    python的log模块是日常使用最多的模块之一,  简单的使用这里就不多说了,见(http://blog.csdn.net/jianhong1990/article/details/17475717 ...

最新文章

  1. 新款笔记本写代码贼爽,包邮送一台!
  2. 在TSQL中替换换行符
  3. 一个有趣的关于flash和多种设备交互等技术应用的演示网站
  4. LeetCode 2145. 统计隐藏数组数目(前缀和)
  5. C语言小白——数组与字符串
  6. OGG迁移大库注意要点之impdp导入产生大量归档
  7. Java c语言词法,c语言写的Java词法分析
  8. 通用业务平台设计(一):概览
  9. include vdimgck.php,织梦后台升级后验证码登录一直显示错误的解决方法
  10. 计算机及其工作原理ppt,计算机及其工作原理ppt课件
  11. 网页转化成pdf,网页转换图片,wkhtmltopdf,wkhtmltoimage使用小结
  12. stm32_电容触摸按键
  13. EDEM软件简单介绍
  14. 渐进式Express源码学习2-道士下山
  15. Ansible主机清单—inventory主机清单
  16. ios实用wifi分析仪——AirPort
  17. h5后缀文件python处理
  18. Yii学习--使用Yii来建立博客
  19. 逻辑回归-关于WOE和IV的一些理解
  20. 监听元素宽高变化resize

热门文章

  1. python输出结果空格分割_用Python编写固定宽度,以空格分隔的CSV输出
  2. 关于压缩工具 7z(7-zip) 如何设置压缩算法(选项 -m 的解读)
  3. 只做macd二次金叉_【教你一招】MACD低位二次金叉
  4. 计算机组装与维修单招,单招职二 计算机组装与维修试卷.doc
  5. 百度地图android绘图类,Class:android总类/android离线地图类
  6. 用access建立一个试题库_Access考试题库(含答案).doc
  7. php云服务器买什么系统吗,php云服务器买什么系统
  8. java string args_java – 语法“final String … args”是什么意思/做什么?
  9. C/C 输入输出缓冲区
  10. 计算机主机箱外部介绍图,电脑的主机结构是怎样的 电脑主机结构图【图文】...