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)

猜你喜欢

转载自blog.csdn.net/sinat_33150417/article/details/82983759