leetcode 345 反转字符串中的元音字母
https://leetcode.cn/problems/reverse-vowels-of-a-string/description/ 题目
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 * 105s由 可打印的 ASCII 字符组成
思路
使用两个指针,一个从左一个从右,向中间靠拢,如果双方都处于元音字母上,则进行交换。直到两者相交。
代码
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;
}
}