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

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

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

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

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

题目描述

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

示例 1:



输入: "hello"输出: "holle"

示例 2:



输入: "leetcode"输出: "leotcede"

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

题目难度:简单

通过次数:17.9K

提交次数:37.2K

贡献者:LeetCode

相关标签

双指针
https://leetcode-cn.com/tag/two-pointers

字符串
https://leetcode-cn.com/tag/string

相似题目

反转字符串
https://leetcode-cn.com/problems/reverse-string  难度: 简单

删去字符串中的元音
https://leetcode-cn.com/problems/remove-vowels-from-a-string  难度: 简单

解题思路:

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

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

具体的操作如下:

将原字符串遍历一次,取出其中的元音字母放进一个 list (比如,变量名用 vList) 中

调用函数 reverse() 将 vList 进行反转,得到反转后的 vList

重新遍历原字符串,遇到非元音字母直接输出;遇到元音字母,则从已反转的 vList 中取出需要的元音字母。

已 AC 代码:



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


image.png


LeetCode面试系列:


第1天:Leetcode 89 - 格雷码

第2天:No.136 - 只出现一次的数

第3天:No.67 - 二进制数求和

第4天:No.202 - 快乐数

第5天:No.204 - 统计质数

第6天:No.9 - 回文数

第7天:No.13 - 罗马数字转整数

第8天:No.58 - 最后一个单词的长度

目录
相关文章
|
25天前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
31 1
|
1月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
24 9
|
1月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
17 0
|
1月前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
28 0
|
1月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
19 0
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
9天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
10天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
34 4
|
1月前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
67 2
|
1月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
28 0