【LeetCode】345. Reverse Vowels of a String 反轉字串中的母音字母(Easy)(JAVA)
阿新 • • 發佈:2020-12-27
技術標籤: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”.
題目大意
編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。
解題方法
- 找出第一個母音字元,找出最後一個母音字元,然後交換;找出第二個母音字元,找出倒數第二個母音字元,交換…
- 直到開始和結束的 index 相交為止
- 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使用者