当前位置: 首页 > article >正文

[数组双指针] 0345. 反转字符串中的元音字母

文章目录

      • 1. 题目链接
      • 2. 题目大意
      • 3. 示例
      • 4. 解题思路
      • 5. 参考代码

1. 题目链接

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



2. 题目大意

描述:给定一个字符串 s。

要求:将字符串中的元音字母进行反转。

说明

  • 元音字母包括 'a''e''i''o''u',且可能以大小写两种形式出现不止一次。
  • 1≤s.length≤3×105。
  • s 由可打印的 ASCII 字符组成。


3. 示例

输入:s = "hello"
输出:"holle"

输入:s = "leetcode"
输出:"leotcede"



4. 解题思路

  1. 我们先将字符串转为数组。
  2. 使用两个指针 left,right。left 指向字符串开始位置,right 指向字符串结束位置。
  3. 然后 left 依次从左到右移动查找元音字母,right 依次从右到左查找元音字母。
  4. 如果都找到了元音字母,则交换字符,然后继续进行查找。
  5. 如果遇到 left==right 时停止。
  6. 最后返回对应的字符串即可。


5. 参考代码

class Solution {
    public String reverseVowels(String s) {
        int left = 0, right = s.length()-1;
        char[] chars = s.toCharArray();
        Set<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));

        while(left < right){
            // 从左往右
            while(left<right && !vowels.contains(chars[left])){
                left++;
            }
            //从右往左
            while(left<right && !vowels.contains(chars[right])){
                right--;
            }

            // 双指针相遇则退出
            if(left >= right) break;

            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;

            left++;
            right--;
        }
        return new String(chars);
    }



http://www.kler.cn/a/405456.html

相关文章:

  • 合法三元数量计算
  • Cesium 加载B3DM模型
  • 排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序
  • Spring Web入门练习
  • STM32H7开发笔记(2)——H7外设之多路定时器中断
  • Linux运维篇-iscsi存储搭建
  • 区号查询免费API接口教程
  • 提成制是什么?如何高效管理提成制?
  • useEffect、useCallback、useMemo和memo的区别
  • PDF 转 HTML API 数据接口
  • 数据库事务及其原理
  • shell脚本启动springboot项目
  • vscode利用ofExtensions插件可以调试单进程Openfoam,但是不能调试mpi多进程案例
  • “软件定义汽车”时代 | 产线海量数据刷写解决方案
  • 【Spark】【大数据技术基础】课程 实验七 Spark基础编程实验
  • Linux|进程程序替换
  • 【PGCCC】B+Tree 的并发优化 BLink-Tree
  • 解锁电商新境界:1688 API接口实战指南——商品详情与关键字搜索全攻略
  • 神经网络12-Time-Series Transformer (TST)模型
  • GoZero接口用postman调用字段类型不够并优化:如何解决数据库插入与更新失败问题
  • 用CAXA CAD电子图板导入图框、标题栏并导出pdf的方法
  • Dubbo HTTP接入之triple协议
  • 了解量子技术:一场科技革命的前夜
  • 【bug】使用transformers训练二分类任务时,训练损失异常大
  • HarmonyOs鸿蒙开发实战(21)=>组件间通信@ohos/liveeventbus
  • vue2 + iview(view-design) 中封装使用 vxe-table 处理表格渲染大量数据卡顿现象