LeetCode今日题目------------反转字符串中的元音字母

Leetcode 345. 反转字符串中的元音字母 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。 示例 1: 输入:s = "hello" 输出:"holle" 示例 2: 输入:s = "leetcode" 输出:"leotcede" 提示: 1 <= s.length <= 3 * 105 s 由 可打印的 ASCII 字符组成 主要思路:获取元音字符添加到容器中并反转 Code: class Solution { pu. 阅读详情
题目
  • 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

  • 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。

用人话说:反转字符串中符合要求的字符们

思路
  • 如果是单纯的反转字符串 第一个想到的是可以用栈解决,这道题应该也可以
  • 脑袋又转了转 可以标记每次发现的元音字符以及出现的位置,然后再反着放回去
  • 进阶一下 每次把正反两次的字符都记住 然后交换位置
  • 好吧 我得承认 我百度了一下什么是原因字母 (ps:此处笑脸)
乱七八糟的代码 (肯定是可以优化的)
@Test
    public void fun() {
    // 输入的字符串
        String s = "aedddssdrio";
        char[] chars = s.toCharArray();
        // 从头开始向前进的指针
        int a = 0;
        // 从后开始往回走的指针
        int b = chars.length - 1;
        // 遍历
        for (int i = 0; i < chars.length; i++) {
            char aChar = chars[a];
            char bCahr = chars[b];
            // 如果两个指针遇到了 直接跳出循环 说明已经过半路了 能交换的都交换过了
            if (a >= b) {
                break;
            }
            //如果左边开始的是原因字母 刹车不走了
            if (isVowel(aChar)) {
            	// 如果右边的也是元音字母 交换位置 两个人继续走
            	// 如果右边的还不是 右边继续走
                if (isVowel(bCahr)) {
                    chars[a] = bCahr;
                    chars[b] = aChar;
                    a++;
                }
                b--;
            }else {
                // 如果a不是 b已经是元音了 b也不动
                if (isVowel(bCahr)) {

                }else {
                // 如果右边的还不是 右边继续走
                    b--;
                }
                // 如果a不是 a继续走
                a++;
            }
        }
        // 打印处理后的字符串
        System.out.println(new String(chars));
    }

// 判断是不是元音字母
    private boolean isVowel(char char) {
        return "aeiouAEIOU".indexOf(char) >= 0;
    }
  • 代码应该还有很大优化空间 不过这正好是好看代码之前的代码思路顺着就走下来了 哈哈哈
345. 反转字符串中的元音字母 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。 示例 1: 输入:s = "hello" 输出:"holle" 示例 2: 输入:s = "leetcode" 输出:"leotcede" 提示: 1 <= s.length <= 3 * 105 s 由 可打印的 ASCII 字符组成 class Solution { public: bool isyuanyin(c 阅读详情

相关推荐

《矩阵论》学习笔记(四):4.2 矩阵的QR分解

《矩阵论》学习笔记(四):4.2 矩阵的QR分解 文章目录《矩阵论》学习笔记(四):4.2 矩阵的QR分解一. Givens矩阵与Givens变换1.1. 概念与理解1.2. Givens矩阵求解方法二. Householder矩阵与Householder变换2.1. 概念与理解2.2. Householder矩阵求解方法2.3. Givens变换与Householder变换的关系三. 矩阵的QR...

shine的博客 3675

LeetCode刷题-反转字符串中的元音字母

前言说明 算法学习,日常刷题记录。 题目连接 反转字符串中的元音字母 题目内容 给你一个字符串s,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括’a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。 示例1: 输入:s = “hello” 输出:“holle” 示例2: 输入:s = “leetcode” 输出:“leotcede” 提示: 1 <= s.length <= 3 * 10^5 s由可打印的ASCII字符组成 方法1 使用双指针法,从字符串

纯洁的博客 840

Open5GS实战指南:Ubuntu 22.04环境下的5G核心网快速部署

本文提供Open5GS在Ubuntu 22.04环境下部署5G核心网的实战指南,涵盖环境准备、MongoDB配置、核心组件安装、WebUI部署及网络调优等关键步骤。通过详细的安装教程和常见问题解决方案,帮助开发者快速搭建开源5G核心网测试环境。

weixin_29202213的博客 537

LeetCode:345(Python)—— 反转字符串中的元音字母(简单)

概述:给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。

m0_61661179的博客 3万+

手把手教你用STM32实现三相永磁同步电机FOC控制(附代码)

本文详细介绍了基于STM32的三相永磁同步电机(PMSM)FOC控制实现方法,涵盖硬件设计、软件架构、参数调试及完整代码解析。通过磁场定向控制(FOC)算法,实现高效精准的电机控制,适用于工业自动化、电动汽车等领域。文章还提供了硬件选型建议、电流采样方案对比及PID参数整定技巧,助力开发者快速掌握FOC控制技术。

weixin_29168675的博客 94

手把手教你学GPU的KMD专栏--3.4 中断处理机制与优化

记住,中断处理是GPU与CPU通信的"桥梁",没有高效的中断处理,GPU的性能将无法充分发挥。KMD通过"快进快出"原则、事件标志机制、GPU本机围栏等技术,实现高效、低延迟的中断处理。:GPU本机围栏机制允许GPU在满足特定条件(如围栏值达到某个阈值)时才触发中断,而不是每次围栏更新都触发中断,从而显著减少CPU唤醒次数,降低功耗。正如Microsoft GPU架构师在2022年WinHEC大会上指出:"没有好的中断处理,再强大的GPU也会被系统延迟拖垮。:多个GPU设备共享中断,导致中断处理混乱。

MHD0815的博客 111

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

反转字符串中的元音字母-力扣345 问题描述 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。 示例1 输入:s = “hello” 输出:“holle” 示例2 输入:s = “leetcode” 输出:“leotcede” 提示 1 <= s.length <= 3 * 105 s 由 可打印的 ASCII 字符组成 思路分析 采取从两边向中间搜索的策略 p,q分别记录从前搜索和从后

Pretend的博客 322

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

图像增强(Image Enhancement):指不考虑图像降质原因,利用各种数学方法和变换手段,增强图像中人们感兴趣部分或提高有用的图像特征的清晰度。从图像质量来看,图像增强提高了图像的可懂度,改善了图像的视觉效果例如在现实场景中,针对那些对比度较差、视觉效果不好的图像,我们就可以利用图像增强改善视觉质量图像增强可分为如下几种基于灰度级变换的图像增强基于直方图修正的图像增强基于照度反射模型的图像增强基于模糊技术的图像增强基于伪彩色处理的图像增强其他图像增强方法分段线性灰度级变换。

快乐江湖的博客 3331

【算法千题案例】每日LeetCode打卡——68.反转字符串中的元音字母

算法题打卡:反转字符串中的元音字母。没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。所以说,树倒了,没有一片雪花是无辜的

努力前行,总会成为自己心中的那道光 5万+

GLM-4本地部署的实战教程

本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat

herosunly的博客 25万+

2021.08.19-力扣刷题(345、27、28、35、53、66、58、67)

27. 移除元素 链接:https://leetcode-cn.com/problems/remove-element/ 方法一:暴力解决 class Solution: def removeElement(self, nums: List[int], val: int) -> int: n = len(nums)-1 for num in nums: if num != val: nums.ap

weixin_42038527的博客 255

OSCP-1-3-natraj(本地文件包含、日志中毒、apache2配置漏洞、nmap提权)

像往常一样,我们将使用“Netdiscover”工具识别主机的 IP。所以,让我们首先用 nmap 列出所有 TCP 端口。我们从访问web服务(80端口)开始,在那里我们找到了几张关于Natraj的图片和信息,我们将查看源代码和robots.txt,似乎没有什么有用的。(或至少,目前)。因此,让我们继续进行。在 Dirb 及其默认字典的帮助下,我们找到了一个名为“”的目录。我们进入并列出一个名为“”的文件:如果我们执行它,我们会看到它什么也不做。我们可能需要添加其他内容。

墨痕诉清风的博客 528

今日算法3.26

解读:用双指针,遍历的过程中,我们不停地将 i 向右移动,直到 i 指向一个元音字母(或者超出字符串的边界范围);元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。指向的元音字母,否则说明所有的元音字母均已遍历过,就可以退出遍历的过程。输入:s = ["H","a","n","n","a","h"]输入:s = ["h","e","l","l","o"]输出:["h","a","n","n","a","H"]输出:["o","l","l","e","h"]

weixin_51930902的博客 94

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

给你一个字符串s,仅反转字符串中的所以元音字母,并返回结果字符串。元音字母包括'a','e','i','o','u',且可能大小写两种形式出现。 示例一: 输入:s="hello" 输出:"holle" 事例二: 输入:"leetcode" 输出:"leotcede" 方法:双指针 我们可以使用两个指针i和j对字符串想向的进行遍历。具体地,指针i初始时指向字符串s的首位,指针j初始指向字符串s的末位。在遍历的过程中,我们不停地将i向右移动,直到i指向一个元音字母(或者超出字符串边界范围);

qq_70799748的博客 308

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Leetcode 题解 - 双指针——反转字符串中的元音字符

Given s = "leetcode", return "leotcede". 使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 为了快速判断一个字符是不是元音字符,我们将全部元音字符添加到集合 HashSet 中,从而以 O(1) 的时间复杂度进行该操作。 时间复杂度为 O(N):只需要遍历所有元素一次 空间复杂度 O(1):只需要使用两个额外变量 private final static HashSet<Character&g

xiangqian0721的博客 516

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Leetcode-反转字符串中的元音字母

元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。从前往后从后往前分两路先找元音再交换。

Vanderbiol的博客 173

LeetCode题练习与总结:反转字符串中的元音字母--345

本文详细介绍了如何反转字符串中的元音字母,包括解题思路、具体代码实现、时间复杂度与空间复杂度分析,以及涉及的关键知识点,为解决此类问题提供了清晰的指导。

一直学习永不止步 795

【一】反转字符串中的元音字母

将left指针指向字符串的首位,right指针指向字符串的末位。在遍历的过程中,left指针不断地向右移动,直到指向一个元音字母(或者越界);此时,如果left

weixin_42233232的博客 494

【leetcode 每日一题】反转字符串中的元音字母

题目要求 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例1: 输入:“hello” 输出:“holle” 示例2: 输入:“leetcode” 输出:“leotcede” 个人想法: 这道题使用的是双指针算法。 交换的之后需要 i ++, j – 否则会进入死循环 题目说的是元音字母,那么也就是包括了大写和小写的所有元音字母。 class Solution { public: string reverseVowels(string s) { int i

m0_47746932的博客 252

反转字符串、反转字符串中的元音字母、两个数组的交集,springboot工作原理面试

小编菜解 public static String reverseVowels(String s) { List list = new ArrayList() {{ add(‘a’); add(‘e’); add(‘i’); add(‘o’); add(‘u’); }}; char[] chars = s.toCharArray(); int lg = s.length(); int right = s.length(); //遍历字符串前半段,如果是元音,则寻找右半段的最后一个元音,然后交换。 //如果不

m0_64867896的博客 334

反转字符串中的元音字母

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入:“hello” 输出:“holle” 示例 2: 输入:“leetcode” 输出:“leotcede” 提示: 元音字母不包含字母 “y” 。 int vowel(char w){//判断是否为元音字母 int flag=0; switch(w){ case 'a': flag=1;break; case 'A': flag=1;break; case 'e': f

wang19961023的博客 665

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

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

qq_53999369的博客 472

在Java中,如何使一个字符串的首字母变为大写

问题:在Java中,如何使一个字符串的首字母变为大写 我使用Java去获取用户的字符串输入。我尝试使他们输入的第一个字符大写 我尝试这样: String name; BufferedReader br = new InputStreamReader(System.in); String s1 = name.charAt(0).toUppercase()); System.out.println(s1 + name.substring(1)); 导致了编译错误 Type mismatch: canno

weixin_44560620的博客 1万+

python反转字符串的元音字母_反转字符串&反转字符串中的元音字母

解题思路因为在 Python 中字符串是不可变,因此遍历字符串交换每个单词内字符位置的方法不太可行,但是利用 Python 切片的便利,可以写出更优雅的实现方式。1、常规思路将字符串分割成单词列表 然后把每个单词反转切片使用for循环遍历class Solution:def reverseWords(self, s: str) -> str:return " ".join(word[::-1...

weixin_39918690的博客 619
上一篇: Java---文件指定行添加内容
下一篇: 新手LetCode541 --- 反转字符串二
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值