説明:
入力として文字列を取る関数を書くと文字列の唯一の母音を逆転。
例1:
入力:"hello"を
出力:"holle"
例2:
入力:"leetcode"
出力:"leotcede"
注意:
母音は「Y」の文字が含まれていません。
溶液:
最初の試み:1の場合に失敗しました。
クラスソリューション{ パブリック文字列reverseVowels(文字列S){ もし、(S == NULL || s.length()== 0 ){ 戻り ヌル。 } 文字列TMP = "" ; 以下のために(int型 i = 0; i)は(s.lengthを<; iは++ ){ 場合(s.charAt(I)== '' || s.charAt(I)== 'E' || s.charAt( I)== 'i'をs.charAt(I)== 'O' || s.charAt(I)== 'は、U'はs.charAt(I)== '' || S ||。 charAt(I)== 'E' || s.charAt(I)== '私は' || s.charAt(I)== 'O' || s.charAt(I)== 'U' ) 、TMP = TMP + s.charAt(I)。 文字列のRES = "" ; 以下のために(int型 i = 0; i)は(s.lengthを<; iは++ ){ 場合(s.charAt(I)== '' || s.charAt(I)== 'E' || s.charAt( I)== 'i'をs.charAt(I)== 'O' || s.charAt(I)== 'は、U'はs.charAt(I)== '' || S ||。 charAt(I)== 'E' || s.charAt(I)== '私は' || s.charAt(I)== 'O' || s.charAt(I)== 'U' ){ RESの =のRES + tmp.charAt(K)。 kは = K-1 。 } 他{ RESの = RES + s.charAt(I)。 } } 戻りRES。 } }
第二の試み
溶液:
クラスソリューション{ パブリック文字列reverseVowels(文字列S){ もし、(S == NULL || s.length()== 0 ){ リターン "" 。 } 文字列TMP = "" ; INT = 0を起動します。 INT端= s.length() - 1 ; StringBuilderのSB = 新しいStringBuilderの(S)。 ブール exchange_flag = 偽; ブール start_flag = 偽; ブール end_flag = 偽; 文字tmp_char2 = ' - ' ; 文字tmp_char1 = ' - ' ; 一方、(開始< エンド){ 場合(isVowel(s.charAt(起動))){ start_flag = 真。 tmp_char1 = s.charAt(開始) } 他{ 起動 1 + START = 。 } であれば(isVowel(s.charAt(終了))){ end_flag = 真。 tmp_char2 = s.charAt(エンド)。 } 他{ 端 =エンド- 1 。 } であれば(start_flag && end_flag){ sb.deleteCharAt(スタート)。 sb.insert(スタート、tmp_char2)。 sb.deleteCharAt(エンド)。 sb.insert(エンド、tmp_char1)。 開始 = 1 +始めます。 エンド =エンド-1 ; start_flag = 偽; end_flag = 偽; } } / * のための(I = 0 int型、iが(s.lengthを<); iが++){ もし(s.charAt(I)== '' || s.charAt(I)== 'E' || s.charAt(I)== '私は' || s.charAt(I)==」 O '|| s.charAt(I)==' U '|| s.charAt(I)==' '|| s.charAt(I)==' E '|| s.charAt(I)= = '私は' || s.charAt(I)== 'O' || s.charAt(I)== 'U') TMP = TMP + s.charAt(I)。 } int型K = tmp.length() - 1; 文字列のRES = ""; 以下のために(INT i = 0; i)は(s.lengthを<; iは++){ IF(s.charAt(I)== '' || s.charAt(I)== 'E' || s.charAt( I)== 'i'をs.charAt(I)== 'O' || s.charAt(I)== 'は、U'はs.charAt(I)== '' || S ||。 charAt(I)== 'E' || s.charAt(I)== '私は' || s.charAt(I)== 'O' || s.charAt(I)== 'U'){ RESの=のRES + tmp.charAt(K)。 K = K-1。 } 他{ RESの= RES + s.charAt(I)。 } } * / リターンsb.toString()。 } パブリック・ ブールisVowel(文字ではない){ IF(ない== '| ==ない'ノー|| == '彼女がした|| ==' O == ||ない「Uを|| '' || == NO 'E' || ==なし'I' == || || O Uを==ませんでしたが==ません{) を返す 真。 } エルス{ 戻り 偽。 } } }