在做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中,字元換是不可變,更改字串不會修改字串,而是建立乙個新的字串。
字串是可切片,切片字串會以給定的增量從字串中的乙個點(向後或向前)向另乙個點提供乙個新字串。它們在下標中採用切片表示法或切片物件:
# 下標通過在大括號中包含冒號來建立切片:
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 # index = index - 1
new_string += a_string[index] # new_string = new_string + character
return new_string
第四種方法:迴圈從字串提取資料,寫入到乙個空列表中,然後使用join進行字串拼接(慢)
def reverse_a_string_more_slowly(a_string):
new_strings =
index = len(a_string)
while index:
index -= 1
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
參考文章:reverse a string in python Python實現字串反轉
題目描述 現有字串strs,現要將其進行反轉。輸入 abcde 輸出 edcba 方法一 使用字串切片 coding utf 8 strs input res strs 1 print res 方法二 使用join函式進行連線 coding utf 8 strs input strs list fo...
Python實現字串反轉
將字串 s helloword 反轉輸出為 drowolleh 以下通過多種方法實現 s helloword r s 1 print r 結果 drowolleh reduce 函式會對引數序列中元素進行累積。函式將乙個資料集合 鍊錶,元組等 中的所有資料進行下列操作 用傳給 reduce 中的函式...
mysql 字串 反轉 字串反轉的9種方法
1.使用array.reverse方法 對於字串反轉,我們可以使用.net類庫自帶的array.reverse方法 public static string reversebyarray string original char c original.tochararray array.revers...