LeetCode 346. 反轉字符串中的元音字母
題目
編寫一個函數,以字符串作爲輸入,反轉該字符串中的元音字母。
示例
- 輸入: “hello”
輸出: “holle” - 輸入: “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]