Python 實現字串反轉的9種方法
阿新 • • 發佈:2018-12-10
在做leetcode的試題中,做到反轉整數,就涉及到字串反轉,為了儘可能可以寫出更多的方法,於是寫下這篇文章
樣例:如 a='123456789' 反轉成 a='987654321'
第一種方法:使用字串切片
>>> a='123456789' >>> a = a[::-1] '987654321'
第二種方法:使用reversed() 可讀行好,但速度較慢
>>> ''.join(reversed('123456789')) '987654321'
封裝使用
def reversed_string(a_string): return a_string[::-1] >>> reversed_string('123456789') '123456789'
注意:
python的str物件中沒有內建的反轉函式
python字串相關基礎知識:
-
python中,字元換是不可變,更改字串不會修改字串,而是建立一個新的字串。
-
字串是可切片,切片字串會以給定的增量從字串中的一個點(向後或向前)向另一個點提供一個新字串。它們在下標中採用切片表示法或切片物件:
# 下標通過在大括號中包含冒號來建立切片: string[start:stop:step] # 要在大括號外建立切片,您需要建立切片對 slice_obj = slice(start, stop, step) string[slice_obj]
第三種方法:迴圈從字串提取資料,然後進行字串拼接(慢)
def reverse_a_string_slowly(a_string): new_string = '' index = len(a_string) while index: index -= 1 new_string += a_string[index]
return new_string
第四種方法:迴圈從字串提取資料,寫入到一個空列表中,然後使用join進行字串拼接(慢)
def reverse_a_string_more_slowly(a_string): new_strings= [] index = len(a_string) while index: index -= 1 new_strings.append(a_string[index]) return ''.join(new_strings)
第五種方法:使用字串拼接(慢)
def string_reverse(a_string): n = len(a_string) x="" for i in range(n-1,-1,-1): x += test[i] return x
第六種方法:使用reduce
reduce(lambda x,y : y+x, a_string)
第七種方法:使用遞迴(慢)
def rev_string(s): if len(s) == 1: return s return s[-1] + rev_string(s[:-1])
第八種方法:使用list() 和reverser()配合
a_string='123456789' def rev_string(a_string): l=list(a) l.reverse() return ''.join(l)
第九種方法:使用棧
def rev_string(a_string): l = list(a_string) #模擬全部入棧 new_string = "" while len(l)>0: new_string += l.pop() #模擬出棧 return new_string
原文:http://www.chenxm.cc/post/713.html