Loading... https://leetcode.cn/problems/reverse-vowels-of-a-string/description/ ## 题目 给你一个字符串 `s` ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 `'a'`、`'e'`、`'i'`、`'o'`、`'u'`,且可能以大小写两种形式出现不止一次。 **示例 1:** **输入:** s = "hello" **输出:**"holle" **示例 2:** **输入:** s = "leetcode" **输出:**"leotcede" **提示:** - `1 <= s.length <= 3 * 105` - `s` 由 **可打印的 ASCII** 字符组成 ## 思路 使用两个指针,一个从左一个从右,向中间靠拢,如果双方都处于元音字母上,则进行交换。直到两者相交。 ## 代码 ```java class Solution { private final char[] vowels = new char[]{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}; public String reverseVowels(String s) { char[] arr = s.toCharArray(); int i = 0; int j = s.length() - 1; while (i < j) { while (i < j && !isVowels(s.charAt(i))) { i++; } while (i < j && !isVowels(s.charAt(j))) { j--; } if (i < j) { arr[j] = s.charAt(i); arr[i] = s.charAt(j); i++; j--; } } return new String(arr); } private boolean isVowels(char test) { for (char c : vowels) { if (c == test) { return true; } } return false; } } ``` 最后修改:2023 年 01 月 28 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请我喝杯咖啡吧。