iT邦幫忙

0

leetcode with python:345. Reverse Vowels of a String

  • 分享至 

  • xImage
  •  

題目:

Given a string s, reverse only all the vowels in the string and return it.

The vowels are 'a', 'e', 'i', 'o', and 'u', and they can appear in both cases.

給定一個字串,將其裡面母音的位置反轉
ex:input:"hello"=>output:"holle"

這題跟344.還蠻像的
只是多了些條件判斷

class Solution:
    def reverseVowels(self, s: str) -> str:
        l=0
        r=len(s)-1
        s=list(s)
        
        while l<r:
            while l<r and s[l] not in "AEIOUaeiou":
                l=l+1
                
            while l<r and s[r] not in "AEIOUaeiou":
                r=r-1
                
            if l<r:
                s[l],s[r]=s[r],s[l]
                l=l+1
                r=r-1
                
        return "".join(s)

先將字串轉為字元陣列方便位置的互換
設立兩個指標(l,r),一個從陣列頭,一個從陣列尾開始走
兩者走到母音的位置停下,透過兩者位置決定是否互換值
互換完兩者下一輪再繼續尋找下一個母音進行交換
不斷重複直到兩者相遇或交錯
之後用join將陣列變回字串回傳
最後執行時間51ms(faster than 96.31%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言