Python字符串倒序-7. Reverse Integer
今天做了下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的更多相关文章
- [Python]实现字符串倒序的三种方法
a=" 1: print(a[::-1]) 2: b=list(a) b.reverse() print(''.join(b)) 3: c=len(a)-1 str_1=[] while(c ...
- Python 字符串
Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...
- 【C++实现python字符串函数库】一:分割函数:split、rsplit
[C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...
- No.007 Reverse Integer
7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...
- js字符串倒序
有的时候我们需要把字符串倒序. 比如“范坚强”的倒序就是“强坚范”. 如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var r ...
- Reverse Integer 2015年6月23日
题目: Reverse digits of an integer. Example1: x = , return Example2: x = -, return - 思路:递归 解答: / test ...
- LeetCode--No.007 Reverse Integer
7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...
- leetcode:Reverse Integer 及Palindrome Number
Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...
- LeetCode 7 Reverse Integer & int
Reverse Integer 想用余10直接算,没想到 -123%10 是 7, 原因 -123-(-123//10*10) r=a-n*[a/n] 以上,r是余数,a是被除数,n是除数. 唯一不同 ...
随机推荐
- C/C++中的声明与定义
含义 声明(Declaration), 用于告诉编译器被声明的函数/变量的存在, 及它们的类型/调用格式信息, 以检查是否被正确调用. 声明不分配内存空间. 定义(Definition), 用于告诉编 ...
- MySQL复制配置(多主一从)
复制多主一从 replicaion 原理 复制有三个步骤:(分为三个线程 slave:io线程 sql线程 master:io线程) 1.master将改变记录到二进制日志(binary log)中( ...
- Javascript知识点记录(二)
Javascript入门易,精通难,基本上是共识的一个观点.在这个篇幅里,主要对一些难点进行记录. 鸭子类型 Javascript属于动态类型语言的一种.对变量类型的宽容,给了很大的灵活性.由于无需类 ...
- IntelliJ IDEA For Mac 快捷键
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...
- 动手实验iptables的NAT功能实现流量穿透
1.NAT和iptables理论见: http://lustlost.blog.51cto.com/2600869/943110 2.引子 近期,有同事抱怨说数据入库时,由于数据库所在的服务器只有内网 ...
- 新手理解HTML、CSS、javascript之间的关系
http://www.cnblogs.com/dreamingbaobei/p/5062901.html 工作多年,一直忙忙碌碌的应用各种技术,现在不忙了,问问自己究竟在做什么,究竟会什么竟答不上来, ...
- 11月8日PHP练习《留言板》
一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php 登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- 10月25日上午PHP继承多态
概念:子类可以继承父类的一切 方法重写:在子类里面对父类的方法进行重写,实现自己独特的功能.特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类.override重写(子类对父类的重写) ...
- Python之路【第一篇】:Python简介和入门
python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pyth ...
- Python之路【第二十篇】Tornado框架
Tornado Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中. 我 ...