[LeetCode By Python] 345. Reverse Vowels of a String

一、題目

Reverse Vowels of a String

二、解題

輸入一個字符串,如果是元音字母就不進(jìn)行逆序,其他字符進(jìn)行逆序。
想到了兩種方法:

  • 第一種是做兩個游標(biāo),i從左到右遍歷,j從右到左遍歷,遇到元音就跳到下一個,如果i,j均不是元音,則交換兩者的值。i大于等于j時,結(jié)束。
  • 第二種是先遍歷所有非元音字母,用一個Dictionary記錄位置,并在原字符串里刪除,再對修改過的字符串進(jìn)行逆序(剩下的都是元音),最后插入非元音字母。

三、嘗試與結(jié)果

1)第一種方法:

class Solution(object):
    def reverseVowels(self, s):
        l = list(s)
        if (len(l)==0):
            return s
        i = 0
        j = len(l)-1
        vowels = ['a','e','i','o','u','A','E','I','O','U']
        while True:
            while (l[i] not in vowels):
                i += 1
                if i > len(l)-1:
                    break
            while (l[j] not in vowels):
                j -= 1
                if j < 0:
                    break
            if i >= j:
                break
            temp = l[i]
            l[i] = l[j]
            l[j] = temp
            i += 1
            j -= 1
        return "".join(l)

思路比較清晰,但是提交過程中卻遇到很多問題,列舉一下:

  1. 沒有考慮到輸入為空
  2. 沒有考慮到while中i,j的越界

結(jié)果:修改了邊界和判斷后AC

2)第二種方法
嘗試了一下,有問題,刪除之后的再進(jìn)行順序插入的話,每次插入一個順序都會更新,已經(jīng)不是之前序列的正常順序了,作罷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容