Python程式設計題41--原地反轉字串
阿新 • • 發佈:2022-01-08
題目
針對一個字串,該字串是以字元列表的形式存在,請編寫一個函式,實現將字串反轉過來。
例如:
給定一個字元列表:["h", "e", "l", "l", "o"],返回結果:["o", "l", "l", "e", "h"]
給定一個字元列表:["h", "a", "n", "n", "a", "H"],返回結果:["H", "a", "n", "n", "a", "h"]
說明:
- 不允許使用其他的列表,只能在原列表上處理
- 不允許使用程式語言的內建函式實現反轉,也不允許對列表進行切片操作
實現思路1
- 使用
雙指標
來實現 - 定義兩個指標:left 和 right,left 從列表第一個位置向中間移動,right 從列表最後一個位置向中間移動
- left 和 right 移動過程中,每次都交換對應的元素,當 left 大於或等於 right 時,停止移動,此時即完成對列表元素的反轉
程式碼實現1
def reverseString(s):
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
實現思路2
- 使用
位運算
來實現 - 針對列表 s,我們要實現原地反轉,只需要讓前一半元素與後一半元素進行交換即可,如果當前元素下標是 i,那麼需交換元素的下標即為 - i - 1
- 在
~
按位取反運算中:~i
=- i - 1
,所以我們直接讓 s[i] 與 s[~i] 交換就行
程式碼實現2
def reverseString(s):
for i in range(len(s) // 2):
s[i], s[~i] = s[~i], s[i]
作者:wintest 出處:https://www.cnblogs.com/wintest 本文版權歸作者和部落格園共有,歡迎轉載,但必須在文章頁面明顯位置給出原文連結,並保留此段宣告,否則保留追究法律責任的權利。更多Python程式設計題,等你來挑戰:Python程式設計題彙總(持續更新中……)