LeetCode力扣刷题:345.反转字符串中的元音字母

每日一题:【力扣345】反转字符串中的元音字母——easy 【力扣345】反转字符串中的元音字母——easy前言LeetCode 345. 反转字符串中的元音字母解法一:双指针法——O(n)O(n)O(n)思路——双指针分别从两端往中间遍历,匹配并交换步骤——遍历取值 前言 本文旨在记录与分享个人的刷题经验,因水平受限,观点难免偏颇,欢迎大家在评论区交流意见 LeetCode 345. 反转字符串中的元音字母 给你一个字符串s,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。 示例 1 阅读详情

思路一

正向遍历str一遍,用vector录入所有元音字母,再反向遍历str一遍,将vector中的字符正序填入str的元音字符位

#include<string>
#include<vector>

class Solution {
public:
    string reverseVowels(string s) {
        vector<char> vowels;
        for(int i=0;i<s.size(); i++){
            if(isVowel(s[i])){
                vowels.push_back(s[i]);
            }
        }
        vector<char>::iterator iter = vowels.begin();
        for(int i=s.size()-1 ; i>= 0&& iter!=vowels.end() ; i--){
            if(isVowel(s[i])){
                s[i]=*iter;
                iter++;
            }
        }
        return s;
    }
    bool isVowel(char ch){
        switch(ch){
            case 'a':
            case 'A':
            case 'e':
            case 'E':
            case 'I':
            case 'i':
            case 'o':
            case 'O':
            case 'u':
            case 'U':
                return true;
            default:
                return false;
        }
    }
};

思路二

双指针,头尾同时遍历

class Solution {
public:
    string reverseVowels(string s) {
        int i = 0, j = s.size() - 1;
        for (; i <= j; i++, j--) {
            if (isVowel(s[i]) && isVowel(s[j])) {
                char temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
            else if (isVowel(s[i])) {
                --i;
            }
            else if (isVowel(s[j])) {
                ++j;
            }
        }
        return s;
    }
    bool isVowel(char ch){
        switch(ch){
            case 'a':
            case 'A':
            case 'e':
            case 'E':
            case 'I':
            case 'i':
            case 'o':
            case 'O':
            case 'u':
            case 'U':
                return true;
            default:
                return false;
        }
    }
};

心得

这道题不难,我第一个想到的解法是思路一,用时4ms,看了评论才知道可以双指针,按理说双指针运行时间应该更少啊,可是我的用了8ms!比vector还慢,想不通。

判断元音字母要单独写一个函数没有问题,可我写的空间复杂度有点高了。
在评论和题解中学到几个简单的

bool isVowel(char ch){
	return ch=='a'||ch=='A'||ch=='e'||ch=='E'||ch=='i'||ch=='I'||ch=='o'
        ||ch=='O'||ch=='u'||ch=='U';
}

还可以用字符串的find方法

  string vowels = "aeiouAEIOU";
        if(vowels.find(ch)==-1) return false;
        else return true;

这样也节省了搓代码的时间啊!

【c++】LeetCode345. 反转字符串中的元音字母 LeetCode345. 反转字符串中的元音字母 https://leetcode-cn.com/problems/reverse-vowels-of-a-string 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: “hello” 输出: “holle” 示例 2: 输入: “leetcode” 输出: “leotcede” 说明: 元音字母不包含字母"y"。 指针对撞: 与125题类似(点击查看125题解),设置左右两个指针:l , r 分别指向字符串的开头和末尾,同 阅读详情

相关推荐

避开RK3588开发板SDIO配置的坑:O9201SB WiFi模组接入实战指南

本文为嵌入式开发者提供了在RK3588开发板上,利用TF卡槽接入O9201SB WiFi6模组的实战指南。文章深度剖析了SDIO配置中常见的电源管理序列冲突问题,并给出了从设备树节点修改、内核编译到系统验证的完整解决方案,帮助开发者避开配置陷阱,成功实现高性能无线连接。

sprite的博客 954

力扣(leetcode)第345题反转字符串中的元音字符(Python)

最后,我写了一篇MySQL教程,里面详细的介绍了MySQL的基本概念以及操作指令等内容,欢迎阅读!元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现不止一次。给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。s 由 可打印的 ASCII 字符组成。输入:s = “leetcode”输入:s = “hello”输出:“leotcede”输出:“holle”

qq_58737789的博客 902

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷

本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。

weixin_29216049的博客 433

力扣345-反转字符串中的元音字母

题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 class Solution { HashSet set = new HashSet(Arrays.asList('a','e','i','o','u','A','E','O','I','U')); public String reverseVowels(String s) { if(s==nu...

qq_1306238492的博客 208

BEVFusion实战:从零搭建LiDAR-Camera融合的3D目标检测环境(附避坑指南)

本文提供了BEVFusion实战指南,详细讲解如何从零搭建LiDAR-Camera融合的3D目标检测环境。内容涵盖环境配置、数据预处理、模型训练与性能优化等关键步骤,并附有实用的避坑技巧,帮助开发者高效部署这一先进的BEV感知算法。

p4q5r6s7t的博客 514

MCU启动流程详解

在MCU启动后,系统从flash主存储区开始执行,先将0x08000000地址存放的堆栈栈顶指针赋给SP寄存器,将0x08000004地址存放的Reset_Handler复位向量地址赋给PC寄存器跳转执行系统复位,期间执行System_Initializes函数配置系统时钟,重定位向量表,执行MDK自带库函数__main将RW、ZI数据段从Flash加载到RAM,并跳转至_rt_entry进行Stack和Heap的初始化,最后跳转到熟悉的main函数。

weixin_50827397的博客 1505

力扣(LeetCode) 345. 反转字符串中的元音字母

题目链接 题解 这题并没有很难,只要用两个指针,一个从头开始走,一个从尾巴开始走,然后碰到元音就停下来交换就好了 代码 class Solution { public: string reverseVowels(string s) { int i=0; int j=s.size()-1; while(i<j) { while(i<j&&s[i]!='a'&&amp.

silentdeathdance的博客 243

LeetCode 面试经典 150 题回顾

最经典 150 题,掌握面试所有知识点 面试经典 150 题 : 题目分析、解题思路、复杂度分析、代码展示

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 8万+

力扣 345. 反转字符串中的元音字母

题目 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。 示例 输入:s = “hello” 输出:“holle” 输入:s = “leetcode” 输出:“leotcede” 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 1987

30、航空公司调度问题的数学模型解析

本文详细解析了航空公司调度问题中的核心数学模型,包括航班时刻表生成、机组人员排班和飞机调度的建模方法与求解技术。通过定义变量、约束条件及目标函数,结合线性规划、整数规划等方法,帮助航空公司实现高效调度。文章还探讨了模型的优化策略、简化方法以及实际应用案例,为提升航空运营效率提供了理论支持和实践指导。

beer8的博客 259

YOLO模型轻量化实战:剪枝、量化与知识蒸馏三大技术落地详解

这篇文章结合我自己的实战经验,从原理、操作、效果、避坑四个方面,给大家讲清楚了YOLO模型轻量化的三大核心技术:剪枝、量化、知识蒸馏。先明确应用场景,再选择合适的技术组合,不要盲目追求极致压缩,要在“大小、速度、精度”之间找平衡。实战才是最好的学习方式——大家可以先拿自己的数据集试试剪枝和量化,感受一下效果,有问题可以在评论区留言。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 592

Leetcode345(力扣345):反转字符串中的元音字母

思路:搞清元音字母有哪些的情况下就变成了很简单的问题了,前后双指针遍历判断,进行交换 class Solution { public: string reverseVowels(string s) { if(s.empty()) return s; int p1=0; int p2=s.size()-1; while(p1<=p2) { if(check(s[p1])&

weixin_44537258的博客 295

路径跟踪 | 图解路径跟踪PID算法(附ROS C++/Python/Matlab仿真)

PID控制是一种经典的控制算法,广泛应用于各种工业场景。在基于PID的局部路径规划中,希望机器人能快速跟踪上预设的轨迹。本文介绍PID控制的基本原理,并基于PID控制律设计路径跟踪算法,最后通过ROS C++/Python/Matlab进行仿真实现,加深理解

FRIGIDWINTER的博客 1万+

​LeetCode刷题实战345:反转字符串中的元音字母

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...

程序IT圈 182

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Leetcode 刷题之路 之 算法思想 一、双指针 : 3) 345. 反转字符串中的元音字母

题目描述: 345. 反转字符串中的元音字母 难度:简单 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: "leetcode" 输出: "leotcede" 说明: 元音字母不包含字母"y"。 思路: 1、因为要反转字母,所以从前 从后 分别来遍历字符串 2、双指针,和快速排序的思想很想,需要找到交换的条件 // 开始的想法:写的太粗糙了,很多直接用函数封装起来就行了 class.

qq_41760343的博客 225

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode刷题系列----模式1(Two Points 双指针)- 345:Reverse Vowels of a string反转字符串中的元音字母

Tips:定义两个指针,left和right java 和 c# 十分类似,感觉语法在互相降重,搞的晕头转向,一会大写一会小写,一会有括号一会没括号 python还是很高效 与官方思路求同存异,似乎两个逻辑存在一种运算关系 四种方法的代码如下: python class Solution: def reverseVowels(self, s: str) -> str: def isVowel(character: str) -> bool: r

My_Communication的博客 4444

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java实现 LeetCode 345 反转字符串中的元音字母

345. 反转字符串中的元音字母 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: “hello” 输出: “holle” 示例 2: 输入: “leetcode” 输出: “leotcede” 说明: 元音字母不包含字母"y"。 class Solution { public String reverseVowels(String s) { ...

南 墙 1万+

LeetCode第345题_反转字符串中的元音字母

本文解析LeetCode第345题"反转字符串中的元音字母",提供双指针解法及C#、Python、C++三语言实现。通过HashSet存储元音字母,双指针从两端向中间移动交换元音字母,时间复杂度O(n),空间复杂度O(1)。包含详细解题步骤、图解示例、性能对比及常见错误分析,适合初学算法的开发者掌握字符串操作技巧。

qq_40263592的博客 874

力扣刷题百天计划 Day9 反转字符串中的元音字母

我会持续更新我独特的算法思路,希望能给大家带来不一样的思维拓展! 如果大家感觉有帮助的话,欢迎点赞关注支持哦! 你们的鼓励是我坚持下去的动力! !!!

m0_48781656的博客 4527

345. 反转字符串中的元音字母-----leetcode刷题(python解题)

题目 解答 思路: leetcode解题 题目 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 1输入: "hello" 2输出: "holle" ...

jixn的博客 5248

第二次力扣刷题记录

记录自己刷题的过程,有问题、建议、想法、欢迎指出

朱一龙哥哥的博客 2112

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

1. 题目 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: "leetcode" 输出: "leotcede" 说明: 元音字母不包含字母"y"。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-stri...

Michael是个半路程序员 1065

[C++]Leetcode345.反转字符串中的元音字母 (详解)

345.反转字符串中的元音字母 题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: “hello” 输出: “holle” class Solution { public: //定义一个子函数来判断当前字符是否是元音字母 bool isOraigin(char m) { if(m == 'a'||m == 'e'||m == 'i'||m == 'o'||m == 'u'||m == 'A'||m == 'E'||m == 'I'

cpb____的博客 1323

leetcode-345 | 反转字符串中的元音字母

title: leetcode-345 | 反转字符串中的元音字母 date: 2019-4-24 14:48:52 comments: true categories: “leetcode” tags: - leetcode 简单难度 345. 反转字符串中的元音字母(Reverse Vowels of a String) 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例1:...

梦否 511
上一篇: LeetCode力扣刷题:27.移除元素
下一篇: LeetCode力扣刷题:290.单词规律
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值