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是除数. 唯一不同 ...
随机推荐
- gdb调试常用实用命令和core dump文件的生成
1.生成core dump文件的方法: $ ulimit -c //查看是否为0 如果为0 $ ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxx ...
- python学习之day4,函数
1.函数的定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: def ...
- 【转】单调队列优化DP
转自 : http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列是一种严格单调的队列,可以单调递增,也可以单调递减.队 ...
- Python【第二章】:Python的数据类型
基本数据类型 一.整型 如: 18.73.84 二.长整型 如:2147483649.9223372036854775807 三.浮点型 如:3.14.2.88 四.字符串 如:'wupeiqi'.' ...
- Day4-python基础之函数
本次学习内容: 字典查询快的原因 字符编码 函数定义 局部变量.全局变量 返回值 嵌套函数 递归(二分查找) 三元运算 map lamba 函数式编程 高阶函数 内置函数 字典查询快的原因: 字典占用 ...
- 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞
文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...
- pycloudtag 标签云
原创,转载请标明 QQ:231469242 # -*- coding: utf-8 -*- """Python3.0 Created on Sat Nov 26 08:5 ...
- Jquery ui widget开发
Jquery ui 提供了一些基本的widget,但是他提供了很好的机制来创建widget.在jquery css framework中包含了基本的css样式(视觉和感觉诸如颜色,字体大小,图标等), ...
- Bash 4.4 中新增的 ${parameter@operator} 语法
Bash 4.4 中新增了一种 ${...} 语法,长这样:${parameter@operator}.根据不同的 operator,它展开后的值可能是 parameter 这个参数的值经过某种转换后 ...
- [Math & Algorithm] 拉格朗日乘数法
拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程.新学 ...