一、題目
二掏觉、解題
輸入一個字符串区端,如果是元音字母就不進(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)
思路比較清晰方庭,但是提交過程中卻遇到很多問題,列舉一下:
- 沒有考慮到輸入為空
- 沒有考慮到while中i赦颇,j的越界
結(jié)果:修改了邊界和判斷后AC
2)第二種方法
嘗試了一下二鳄,有問題赴涵,刪除之后的再進(jìn)行順序插入的話媒怯,每次插入一個順序都會更新,已經(jīng)不是之前序列的正常順序了髓窜,作罷扇苞。