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)
過兩週了 耶!