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);
    }
}

题解:

  把所有的元音字母放在一个数组中,别忘了要分大写和小写两种情况,把数组封装成一个集合,这样方便以后进行判断操作。

  然后分别从字符串的两个方向进行判断,直到出现两端都是元音字母的情况,否则都直接把字母写进返回的字符数组。

  当出现两端都是元音字母时,就进行交换。

原文地址:https://www.cnblogs.com/rao11/p/11864946.html