前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode面试系列 第9天:No.345 – 反转字符串中的元音字母

LeetCode面试系列 第9天:No.345 – 反转字符串中的元音字母

作者头像
极客中心
发布2021-01-21 15:35:40
4910
发布2021-01-21 15:35:40
举报
文章被收录于专栏:极客中心极客中心

上一篇 LeetCode 面试题中,我们分析了一道相对轻松的字符串面试题 - 最后一个单词的长度。今天,我们接着来看另一道字符串的算法题吧。

今天要给大家分析的面试题是 LeetCode 上第 345 号问题,

LeetCode - 345. 反转字符串中的元音字母

https://leetcode-cn.com/problems/reverse-vowels-of-a-string

题目描述

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

代码语言:javascript
复制
输入: "hello"
输出: "holle"

示例 2:

代码语言:javascript
复制
输入: "leetcode"
输出: "leotcede"

说明: 元音字母不包含字母"y"。

解题思路:

本题的意思很简单,就是给定一个只含有英文字母的字符串,将其中的元音字母在元音字母原有的位置上进行位置反转,而非元音字母的位置保持不变。

需要注意的一点是:元音字母应把 a, e, i, o, u 的小写和大写都考虑在内。

具体的操作如下:

  • 将原字符串遍历一次,取出其中的元音字母放进一个 list (比如,变量名用 vList) 中
  • 调用函数 reverse() 将 vList 进行反转,得到反转后的 vList
  • 重新遍历原字符串,遇到非元音字母直接输出;遇到元音字母,则从已反转的 vList 中取出需要的元音字母。

已 AC 代码:

代码语言:javascript
复制
class Solution:
    def reverseVowels(self, s: str) -> str:
        vowels = ['A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u']
        vList = list()

        vCount = 0
        for index in range(len(s)):  
            if s[index] in vowels:
                vList.append(s[index])

        res_str = ''        
        vList.reverse()

        vOutCount = 0
        for index in range(len(s)):
            if s[index] not in vowels:
                res_str += s[index]
            else:                
                res_str += vList[vOutCount]
                vOutCount += 1

        return res_str

运行结果:

执行用时: 84 ms, 在所有 python3 提交中击败了 48.79% 的用户.

示例代码: https://github.com/JustDoPython/leetcode-python/tree/master/leetcode-345

5 / 5 ( 2 votes )

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档