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

题目

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

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

示例1:

1
2
输入: "hello"
输出: "holle"

示例2:

1
2
输入: "leetcode"
输出: "leotcede"

提示:

  • 1 <= s.length <= 3 * 105
  • s可打印的 ASCII 字符组成

说明:

元音字母不包含字母”y”。

解法

解法一:

忘记了

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public String reverseVowels(String s) {
Set<Character> cSet = new HashSet<>();
cSet.add('A');
cSet.add('E');
cSet.add('I');
cSet.add('O');
cSet.add('U');
cSet.add('a');
cSet.add('e');
cSet.add('i');
cSet.add('o');
cSet.add('u');

List<Character> values = new ArrayList<>();
for (int i = 0;i < s.length();i++) {
char c = s.charAt(i);
if (cSet.contains(c)) {
values.add(c);
}
}
StringBuilder sb = new StringBuilder();
int index = values.size() - 1;
for (int i = 0;i < s.length();i++) {
char c = s.charAt(i);
if (cSet.contains(c)) {
sb.append(values.get(index--));
} else {
sb.append(c);
}
}
return sb.toString();
}
}
0%