【LeetCode】345. 反転文字列の母音文字(Reverse Vowels of a String)

6061 ワード

【英語練習|中国語練習】
タイトルの説明:文字列を入力として関数を作成し、その文字列のアクセント文字を反転します.
例:
  : "hello"
  : "holle"

問題を解く構想:二重ポインタの典型的な問題、元音のアルファベットに注意して小文字だけを考えないでください.
public String reverseVowels(String s) {
	
    if(s == null || s.length() == 0) return s;
        
    char[] c = s.toCharArray();
    int pre = 0, last = c.length - 1;
    while(last > pre){
        while(last > pre && !isVowel(c[last])) last--;
        while(last > pre && !isVowel(c[pre])) pre++;
            
        if(last > pre){
            char t = c[last];
            c[last] = c[pre];
            c[pre] = t;
        }      
        last--;
        pre++;
    }  
    return new String(c);
}
    
public boolean isVowel(char c){
    c = Character.toLowerCase(c);
    if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true;
    return false;
}