今天做了下LeetCode上面字符串倒序的题目,突然想Python中字符串倒序都有哪些方法,于是网上查了下,居然有这么多种方法:

个人觉得,第二种方法是最容易想到的,因为List中的reverse方法比较常用,做LeetCode题目7. Reverse Integer也用了这种方法,程序耗时65ms

#字符串的反转

#用到for循环的步长参数,从大到小循环,到0为止
def reverse1 (s):
rt = ''
for i in range(len(s)-1, -1, -1):
rt += s[i]
return rt
#用到list的反转函数reverse()
def reverse2 (s):
li = list(s)
li.reverse()
rt = "".join(li)
return rt
#用到切片的步长参数,负数代表从右往左遍历
def reverse3 (s):
return s[::-1]
#用到python内建函数reversed(str)
def reverse4 (s):
return "".join(reversed(s))
#用到python内建函数reduce() """ def reduce(function, sequence, initial=None):
reduce(function, sequence[, initial]) -> value Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty. """ #简单的说就是遍历序列s,放入第一个参数的函数中执行,执行之后结果作为函数的第一个参数,序列的下一个元素作为第二个参数,再次运算 #比如第一次,x='1',y='2';第二次:x='21',y='3';第三次:x='321',y='4'...
from functools import reduce
def reverse5 (s):
return reduce(lambda x,y:y+x,s)

好奇的是,到底哪个方法运算速度更快呢,于是实验了一下:

aaarticlea/png;base64,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" alt="" />

显然,第三个方法速度最快,也就是利用切片的步长参数。

可见,这个方法比reverse方法更快更方便,且适用于没有reverse方法的字符串和元组。

于是用该方法替换LeetCode第7题的答案:59ms,果然快了一丢丢:)

附LeetCode 7. Reverse Integer代码:

增加了负数和超过int范围的判断,满足leetcode第7题需要:

class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
y = str(x)
flag = 0
if '-' == y[0]:
flag = 1
y = y[1:]
result='-'
else:result = ''
result += y[::-1]
if int(result) > 2**31-1 or int(result) < 1-2**31 :return 0
return int(result)

Python字符串倒序-7. Reverse Integer的更多相关文章

  1. [Python]实现字符串倒序的三种方法

    a=" 1: print(a[::-1]) 2: b=list(a) b.reverse() print(''.join(b)) 3: c=len(a)-1 str_1=[] while(c ...

  2. Python 字符串

    Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...

  3. 【C++实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

  4. No.007 Reverse Integer

    7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...

  5. js字符串倒序

    有的时候我们需要把字符串倒序. 比如“范坚强”的倒序就是“强坚范”. 如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var r ...

  6. Reverse Integer 2015年6月23日

    题目: Reverse digits of an integer. Example1: x = , return Example2: x = -, return - 思路:递归 解答: / test ...

  7. LeetCode--No.007 Reverse Integer

    7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...

  8. leetcode:Reverse Integer 及Palindrome Number

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...

  9. LeetCode 7 Reverse Integer & int

    Reverse Integer 想用余10直接算,没想到 -123%10 是 7, 原因 -123-(-123//10*10) r=a-n*[a/n] 以上,r是余数,a是被除数,n是除数. 唯一不同 ...

随机推荐

  1. RapidJSON 代码剖析(三):Unicode 的编码与解码

    根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defa ...

  2. 基于OpenSSL实现C/S架构中的https会话

    在实际生产中实现公司内部的web服务器加密访问时,我们就需要实现公司内部的私钥CA,并且完成对web服务器的签署请求,这样我们就可以在自身的内部机构实现对数据的机密性.完整性.身份验证的访问与传输 实 ...

  3. 动画的使用—Drawable Animation

    Drawable Animation可以称为帧动画,因为它是通过每次播放一帧Drawable资源实现的. Drawable Animation算不上真正意义上的动画,因为它的内部实现是通过定时发送消息 ...

  4. maven 生成可执行的jar文件

    微服务的热潮,慢慢讲jar引入了码农的视线之中,从传统web开发中过来的人面对这个东西也算是个新鲜事了,接下来聊一聊在maven下生成可运行jar的那些事. Maven可以使用mvn package指 ...

  5. getline数据来源你的三种方式

    (1)getline从交互式的用户输入中\c中获取内容: # awk 'BEGIN {system("echo \"Input your name:\"");g ...

  6. Asp.Net通过HttpModule实现URL重写

    首先总结一下为什么要对URL进行Rewrite,比如我可以把/Default.aspx?param=3替换成/Home/Default/3(类似mvc). 一.缩短url,隐藏实际路径提高安全性; 二 ...

  7. jsp通过session传递checkbox中的值

    获取checkbox中的值(第一个页面) <% String foodName[]=request.getParameterValues("chioce"); //“chio ...

  8. iis虚拟目录名称“ReportServer”的巧合

      今天测试一个Crystal Report网站的报表服务,建立一个虚拟目录,名为ReportServer,结果无论怎样访问浏览器都返回 localhost/ReportServer - / Micr ...

  9. hoj 2634 How to earn more

    有m个项目和n个员工,做项目i可以获得Ai元,但是必须雇用若干指定的员工.雇用员工j需要Bj元,一旦雇用便可以参与多个项目.问最大收益. 1<=M,N<=100. 最小割. 源点向每个项目 ...

  10. CodeForces 165C Another Problem on Strings(组合)

    A string is binary, if it consists only of characters "0" and "1". String v is a ...