题目链接: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); } }
题解:
把所有的元音字母放在一个数组中,别忘了要分大写和小写两种情况,把数组封装成一个集合,这样方便以后进行判断操作。
然后分别从字符串的两个方向进行判断,直到出现两端都是元音字母的情况,否则都直接把字母写进返回的字符数组。
当出现两端都是元音字母时,就进行交换。