一、题目
二、解题
输入一个字符串,如果是元音字母就不进行逆序,其他字符进行逆序。
想到了两种方法:
- 第一种是做两个游标,i从左到右遍历,j从右到左遍历,遇到元音就跳到下一个,如果i,j均不是元音,则交换两者的值。i大于等于j时,结束。
- 第二种是先遍历所有非元音字母,用一个Dictionary记录位置,并在原字符串里删除,再对修改过的字符串进行逆序(剩下的都是元音),最后插入非元音字母。
三、尝试与结果
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的越界
结果:修改了边界和判断后AC
2)第二种方法
尝试了一下,有问题,删除之后的再进行顺序插入的话,每次插入一个顺序都会更新,已经不是之前序列的正常顺序了,作罢。