美文网首页
[LeetCode By Python] 345. Revers

[LeetCode By Python] 345. Revers

作者: 乐乐可爱睡觉 | 来源:发表于2016-05-30 14:21 被阅读164次

一、题目

Reverse Vowels of a String

二、解题

输入一个字符串,如果是元音字母就不进行逆序,其他字符进行逆序。
想到了两种方法:

  • 第一种是做两个游标,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)

思路比较清晰,但是提交过程中却遇到很多问题,列举一下:

  1. 没有考虑到输入为空
  2. 没有考虑到while中i,j的越界

结果:修改了边界和判断后AC

2)第二种方法
尝试了一下,有问题,删除之后的再进行顺序插入的话,每次插入一个顺序都会更新,已经不是之前序列的正常顺序了,作罢。

相关文章

网友评论

      本文标题:[LeetCode By Python] 345. Revers

      本文链接:https://www.haomeiwen.com/subject/outcdttx.html