Python中实现字符串翻转

来源:互联网 发布:首席数据执行官 编辑:程序博客网 时间:2024/06/05 19:00

第一种:切片
def reverse_string_by_word(s):
lst = s.split() # split by blank space by default
return ’ ‘.join(lst[::-1])

s = ‘Power of Love’
print reverse_string_by_word(s)
… Love of Power

s = ‘Hello World!’
print reverse_string_by_word(s)
…..World! Hello

第二种:用re模块
import re
s = ‘Hello World!’

re.split(r’\s+’, s) # will discard blank spaces
[‘Hello’, ‘World!’]

re.split(r’(\s+)’, s) # will keep spaces as a group
[‘Hello’, ’ ‘, ‘World!’]

s = ‘< Welcome to EF.COM! >’

re.split(r’\s+’, s) # split by spaces
[‘<’, ‘Welcome’, ‘to’, ‘EF.COM!’, ‘>’]

re.split(r’(\w+)’, s) # exactly split by word
[‘< ‘, ‘Welcome’, ’ ‘, ‘to’, ’ ‘, ‘EF’, ‘.’, ‘COM’, ‘! >’]

re.split(r’(\s+|\w+)’, s) # split by space and word
[‘<’, ’ ‘, ”, ‘Welcome’, ”, ’ ‘, ”, ‘to’, ”, ’ ‘, ”, ‘EF’, ‘.’, ‘COM’, ‘!’, ’ ‘, ‘>’]

”.join(re.split(r’(\s+|\w+)’, s)[::-1])
‘> !COM.EF to Welcome <’

”.join(re.split(r’(\s+)’, s)[::-1])
‘> EF.COM! to Welcome <’

”.join(re.split(r’(\w+)’, s)[::-1])
‘! >COM.EF to Welcome< ‘

第三种:
”.join(reversed(re.split(r’(\s+|\w+)’, s)))
‘> !COM.EF to Welcome <’

Python翻转字符串(reverse string), 一共包含5种方法, 其中第一种最简单, 即步长为-1, 输出字符串;
方法如下

5种方法的比较:

  1. 简单的步长为-1, 即字符串的翻转(常用);
  2. 交换前后字母的位置;
  3. 递归的方式, 每次输出一个字符;
  4. 双端队列, 使用extendleft()函数;
  5. 使用for循环, 从左至右输出;

string = ‘abcdef’

def string_reverse1(string):
return string[::-1]

def string_reverse2(string):
t = list(string)
l = len(t)
for i,j in zip(range(l-1, 0, -1), range(l//2)):
t[i], t[j] = t[j], t[i]
return “”.join(t)

def string_reverse3(string):
if len(string) <= 1:
return string
return string_reverse3(string[1:]) + string[0]

from collections import deque
def string_reverse4(string):
d = deque()
d.extendleft(string)
return ”.join(d)

def string_reverse5(string):
#return ”.join(string[len(string) - i] for i in range(1, len(string)+1))
return ”.join(string[i] for i in range(len(string)-1, -1, -1))

print(string_reverse1(string))
print(string_reverse2(string))
print(string_reverse3(string))
print(string_reverse4(string))
print(string_reverse5(string))

输出:

fedcba
fedcba
fedcba
fedcba
fedcba

http://www.jb51.net/article/95501.htm

0 0
原创粉丝点击