1. 程式人生 > >Leetcode 345. 反轉字串中的母音字母 Java&Python

Leetcode 345. 反轉字串中的母音字母 Java&Python

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

示例 1:

輸入: "hello"
輸出: "holle"

示例 2:

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

說明:
母音字母不包含字母"y"。

這道題目的解題思路與167號問題兩數之和一致,這裡只分享一下Java和Python的程式碼實現

Java

public String reverseVowels(String s) {
        if (s.equals("") || s.length() < 2) {
            return s;
        }

        int i = 0;
        int j = s.length() - 1;

        char[] c = s.toCharArray();

        while (i < j) {
            if (isVowel(c[i]) && isVowel(c[j])) {
                char temp = c[i];
                c[i++] = c[j];
                c[j--] = temp;
            } else if (isVowel(c[i])) {
                j--;
            } else {
                i++;
            }
        }

        return String.valueOf(c);
    }

    private boolean isVowel(char c) {
        return c == 'a' || c == 'i' || c == 'e' || c == 'o' || c == 'u'
                || c == 'A' || c == 'I' || c == 'E' || c == 'O' || c == 'U';
    }

Python

    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        vowel = "AEIOUaeiou"
        array = list(s)

        i = 0
        j = len(array) - 1

        while i < j:
            if array[i] in vowel and array[j] in vowel:
                array[i], array[j] = array[j], array[i]
                i += 1
                j -= 1
            elif array[i] in vowel:
                j -= 1
            else:
                i += 1

        return ''.join(array)