天天看點

LeetCode 345. 反轉字元串中的元音字母(JAVA)

題目

編寫一個函數,以字元串作為輸入,反轉該字元串中的元音字母。

示例 1:

輸入: "hello"
輸出: "holle"
示例 2:

輸入: "leetcode"
輸出: "leotcede"           

說明:

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

解題思路

public String reverseVowels(String s) {
        //雙指針
        char[] charList = s.toCharArray();
        int left = 0;
        int right = charList.length-1;
        char[] metaList = {'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'};
        while (left < right){
//            System.out.println(left + " " + right);
            int retSearchLeft = Arrays.binarySearch(metaList, charList[left]);
            int retSearchRight = Arrays.binarySearch(metaList, charList[right]);
//            System.out.println(retSearchLeft + "+" + retSearchRight);
            if (retSearchLeft >= 0 && retSearchRight >= 0){
                char temp = charList[left];
                charList[left] = charList[right];
                charList[right] = temp;
                left++;
                right--;
            }
            else if (retSearchLeft < 0){
                left++;
            }
            else {
                right--;
            }
        }
        s = String.valueOf(charList);
        return s;
    }