Python 實現字符串反轉的9種方法


在做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字符串相關基礎知識:

  1. python中,字符換是不可變,更改字符串不會修改字符串,而是創建一個新的字符串。

  2. 字符串是可切片,切片字符串會以給定的增量從字符串中的一個點(向后或向前)向另一個點提供一個新字符串。它們在下標中采用切片表示法或切片對象:

# 下標通過在大括號中包含冒號來創建切片:
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 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM