345. 反转字符串中的元音字母
题目链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
代码:
class Solution {
public String reverseVowels(String s) {
Character[] c = {'a','e','i','o','u','A','E','I','O','U'};
HashSet<Character> chars = new HashSet<>(Arrays.asList(c));
char[] result = new char[s.length()];
int i = 0;
int j = s.length()-1;
while(i <= j) {
Character ci = s.charAt(i);
Character cj = s.charAt(j);
if(chars.contains(ci) == false) {
result[i] = ci;
i++;
}else if(chars.contains(cj) == false) {
result[j] = cj;
j--;
}else {
result[j] = ci;
result[i] = cj;
i++;
j--;
}
}
return new String(result);
}
}
题解:
把所有的元音字母放在一个数组中,别忘了要分大写和小写两种情况,把数组封装成一个集合,这样方便以后进行判断操作。
然后分别从字符串的两个方向进行判断,直到出现两端都是元音字母的情况,否则都直接把字母写进返回的字符数组。
当出现两端都是元音字母时,就进行交换。