LeetCode 346. 反轉字符串中的元音字母

題目

編寫一個函數,以字符串作爲輸入,反轉該字符串中的元音字母。

示例

  1. 輸入: “hello”
    輸出: “holle”
  2. 輸入: “leetcode”
    輸出: “leotcede”

分析

仍然可用一左一右的雙指針方法,當兩個指針都遍歷到元音字符時,交換這兩個元音字符,在while循環中把所有情況考慮周全即可。

【注】python中字符串可以通過下標訪問某個值,但不能直接修改它。所以我們需要先把字符串轉換成列表,再對列表進行修改操作,最後再把列表轉換爲字符串返回。

題解

class Solution:
    def reverseVowels(self, s: str) -> str:
        vowel = ['a', 'e', 'i', 'o', 'u', 'A' , 'E', 'I', 'O', 'U']
        s1 = list(s)  # 把字符串轉換成列表
        left = 0
        right = len(s)-1
        while left < right:
            if s1[left] in vowel and s1[right] in vowel:
                s1[left], s1[right] = s1[right], s1[left]
                left += 1
                right -= 1
            elif s1[left] in vowel:
                right -= 1
            elif s1[right] in vowel:
                left += 1
            else:
                left += 1
                right -= 1
        s=''.join(s1)  # 把列表轉換爲字符串
        return s

基礎知識

1. 兩個數值交換

s1[left], s1[right] = s1[right], s1[left]  # 可一起直接交換,不必用中間值替換

2. 將字符串轉換爲列表

直接用list()函數轉換

s1 = list(s)

3. 將列表轉化爲字符串

如果用str()函數直接轉換,會得到和原列表一樣的輸出,故需要用到join()函數

s=''.join(s1)

4. 字符串中的替換操作

replace()函數,後者替換前者。

s=s.replace('s[left]','s[right]')  #  用 s[right]替換 s[left]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章