https://leetcode.com/problems/reverse-only-letters/
你會能到一個字串s ,請按照下列規則並回傳反轉的字串
這題只要知道哪個字元是英文字母和要轉去哪而已
比較常見的方法有兩種:
前後都個放一個指標,一個由前往後、另一個由後往前
就樣就能馬上知道前面的字母要放到哪個位置了
class Solution:
def reverseOnlyLetters(self, s: str) -> str:
ans = [i for i in s]
p = 0
q = len(s) - 1
while p < q:
if ans[p].isalpha() and ans[q].isalpha():
ans[p], ans[q] = ans[q], ans[p] #swap
p += 1
q -= 1
elif not ans[p].isalpha():
p += 1
elif not ans[q].isalpha():
q -=1
return ''.join(ans)
先把所有英文字母用堆疊存起來,而堆疊取出的方式是後進先出,也就是取出的過程正好就是反轉的順序
class Solution:
def reverseOnlyLetters(self, s: str) -> str:
letter = [i for i in s if i.isalpha()]
ans = []
for i in s:
if i.isalpha():
ans.append(letter.pop())
else:
ans.append(i)
return ''.join(ans)
過兩週了 耶!