1. 程式人生 > 其它 >【LeetCode】345. Reverse Vowels of a String 反轉字串中的母音字母(Easy)(JAVA)

【LeetCode】345. Reverse Vowels of a String 反轉字串中的母音字母(Easy)(JAVA)

技術標籤:Leetcode字串leetcode演算法資料結構面試

【LeetCode】345. Reverse Vowels of a String 反轉字串中的母音字母(Easy)(JAVA)

題目地址: https://leetcode.com/problems/reverse-vowels-of-a-string/

題目描述:

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:

Input: "hello"
Output: "holle"

Example 2:

Input: "leetcode"
Output: "leotcede"

Note:
The vowels does not include the letter “y”.

題目大意

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

解題方法

  1. 找出第一個母音字元,找出最後一個母音字元,然後交換;找出第二個母音字元,找出倒數第二個母音字元,交換…
  2. 直到開始和結束的 index 相交為止
  3. note: 注意大寫的也是母音字元
class Solution {
    // vowels: a, e, i, o, u
    public String reverseVowels(String s) {
        char[] chars = s.toCharArray();
        int start = 0;
        int end = chars.length - 1;
        while (start < end) {
            for (; start < end; start++) {
                if (isVowel(chars[start])) break;
            }
            for (; start < end; end--) {
                if (isVowel(chars[end])) break;
            }
            if (start < end) {
                swap(chars, start, end);
            }
            start++;
            end--;
        }
        return String.valueOf(chars);
    }
    
    public boolean isVowel(char ch) {
        return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
    }
    
    public void swap(char[] chars, int i, int j) {
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }
}

執行耗時:3 ms,擊敗了90.01% 的Java使用者
記憶體消耗:38.5 MB,擊敗了85.09% 的Java使用者

歡迎關注我的公眾號,LeetCode 每日一題更新