
Given a string s, reverse only all the vowels in the string and return it.
The vowels are 'a', 'e', 'i', 'o', and 'u', and they can appear in both lower and upper cases, more than once.
290Please respect copyright.PENANAEiawziopin
Two Pointers
class Solution {290Please respect copyright.PENANA0van9n07ka
// Return true if the character is a vowel (case-insensitive)290Please respect copyright.PENANAghiBeBveEv
// booleann(for ture or false), 創造"isVowel"(class), 命名(char c), and add aeiouAEIOU290Please respect copyright.PENANAqQ1ADR0m2P
// 當 (char c) 不是vowel,return false/ 是vowel,return true
// * a||b = ab 全为 false 时,计算结果为 false,否则为 true。290Please respect copyright.PENANApMuqRC4KDs
boolean isVowel(char c) {290Please respect copyright.PENANAcwBNZBkaxI
return c == 'a' || c == 'i' || c == 'e' || c == 'o' || c == 'u'290Please respect copyright.PENANAFetukj6aCi
|| c == 'A' || c == 'I' || c == 'E' || c == 'O' || c == 'U';290Please respect copyright.PENANAXUsJm4Ukns
}290Please respect copyright.PENANAkYguXwrkvu
290Please respect copyright.PENANARf3V9fyfCl
// Function to swap characters at index x and y290Please respect copyright.PENANAR9j1LcxwUw
void swap(char[] chars, int x, int y) {290Please respect copyright.PENANAN8DnxAmMHD
char temp = chars[x];290Please respect copyright.PENANAf0y44LZzlB
chars[x] = chars[y];290Please respect copyright.PENANAvpJOXQHoKS
chars[y] = temp;290Please respect copyright.PENANA9nKfcdcW2o
}290Please respect copyright.PENANAAlsuEpHPjx
290Please respect copyright.PENANAn9oubW7k1i
public String reverseVowels(String s) {290Please respect copyright.PENANAkzGm6zjmec
// 設定最左的字母是[0]290Please respect copyright.PENANAk8Aznl2mUS
int start = 0;290Please respect copyright.PENANAZtmOYJdcxL
// 設定最右的字母是[文字總長度-1].290Please respect copyright.PENANAeGlzajSZ6C
int end = s.length() - 1;290Please respect copyright.PENANAPUFtgCfHka
// 將 String 轉換為 char 數組,因為 String 在 Java 中是不可變的290Please respect copyright.PENANAXK1v4l8RvZ
char[] sChar = s.toCharArray();290Please respect copyright.PENANAiqgB1ADqYG
290Please respect copyright.PENANAFG5Bitgbob
// While we still have characters to traverse290Please respect copyright.PENANAhs6bv9ugug
// while the word more than one letter, do this function290Please respect copyright.PENANAI1UnshiMGo
while (start < end) {290Please respect copyright.PENANAuKboMpxpSK
// Find the leftmost vowel290Please respect copyright.PENANAskXIJfRYrJ
// while start 少於 string length() 同時 [start] 不是vowel,return start ++290Please respect copyright.PENANAc6ncgRXWLD
while (start < s.length () && !isVowel(sChar[start])) {290Please respect copyright.PENANAm05anTUlBK
start++;290Please respect copyright.PENANAbYQl6Mpn9C
}290Please respect copyright.PENANAyOjJPQ48xd
// Find the rightmost vowel290Please respect copyright.PENANAQvAM0iJZiC
// while end 大於 0 同時 [end] 不是vowel,return end --290Please respect copyright.PENANAfI3T00igeX
while (end >= 0 && !isVowel(sChar[end])) {290Please respect copyright.PENANAq7YAgWYGU0
end--;290Please respect copyright.PENANAHwigKEOmnn
}290Please respect copyright.PENANA21KcKHdXdn
// Swap them if start is left of end290Please respect copyright.PENANApeLAkAtqpe
// swap function: (in what string, value 1, value 2), swap value 1 and 2290Please respect copyright.PENANAzYesyQcojz
if (start < end) {290Please respect copyright.PENANAZH6Qa4KRwX
swap(sChar, start++, end--);290Please respect copyright.PENANAg1BqlpLjgQ
}290Please respect copyright.PENANA5e572F1DEt
}290Please respect copyright.PENANAAeg975k3VY
290Please respect copyright.PENANASXDfvD1ffq
// Converting char array back to String290Please respect copyright.PENANALQciSi3FuL
// 顯示新的String290Please respect copyright.PENANAbMcIUkijaK
return new String(sChar);290Please respect copyright.PENANA4fpabTPwa5
}290Please respect copyright.PENANAzjWaM7pNTA
};