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是除数. 唯一不同 ...
随机推荐
- JavaScript模板引擎artTemplate.js——为什么使用模板引擎?
作为一个工作一年的菜鸟,在公司做了几个外包项目,也接触到了不同形式的web开发.其实也没多少,就是javaweb开发和HTML5移动开发,这两者在页面展示的时候的解决方案还是有所不同的. 1.vo+e ...
- Mybatis使用总结
一.最基本的配置文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurati ...
- 软件工程(FZU2015)助教总结
本次构建之法-SE助教工作,和福州大学张老师协作,福大学生基本发挥出了一定水平,在此做个小结. 教师 张老师本身的SE教学经验足够丰富,对教学工作中的教师.助教.学生的角色定位清晰,整体节奏和安排合理 ...
- Windows 10一周年更新正式版官方ISO镜像(1607)
微软已经开始推送Win10一周年更新正式版系统,按照此前预告微软官方网站也同步推出了Win10一周年更新正式版ISO官方镜像下载,版本已经升级到最新的1607,也就是Win10 Build 1607, ...
- 7.Android开源项目WheelView的时间和地址联动选择对话框
类似WheelView的时间和地址联动选择对话框在现在App经常看到,今天小结下. 主布局界面: <LinearLayout xmlns:android="http://schemas ...
- Notepad++编写Markdown
Markdown语法高亮 下载userDefineLang_markdown.xml 打开Notepad++的 Language 菜单,选中底部的 Define your language... 在 ...
- npm命令教程
教程:http://www.runoob.com/nodejs/nodejs-npm.html 常用命令:http://www.cnblogs.com/PeunZhang/p/5553574.html
- 业务中是否有必要让所有的ViewController统一继承抽象类
疑问来自:这里 1.事出有因 其中博主说道的情况我其实也经历过,当时还在找到一个模式可以改变这样的情况.直到有一天看到这个博客,今天晚上有时间来规整一下博主的思路和写了一个测试代码. 这是我目前的Ap ...
- ionic ios 左滑 白屏
之前发现ionic在发布ios之后,左滑屏幕的时候会出现界面变白,但是画面原有的位置点击还是有效的,但是点击之后界面是不正确的,返回到上上一步 然后查找资料发现是ios系统内置的左滑动作造成了影响,修 ...
- Bash 是如何从环境变量中导入函数的
在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变 ...