文字列IIでフリップの言葉。質問の意味がchar配列の文章を使用することで、単語の順序を反転してください。例、
例:
入力:[ "T"、 "H"、 "E"、 " " "S"、 "K"、 "Y"、""、 "I"、 "S"、」 " "B"、" L " "U"、 "E"] 出力:[ "B"、 "L"、 "U"、 "E"、" " "I"、 "S"、"」、 "S"、 "K" 、 "Y"、」」、 "T"、 "H"、 "E"]
アイデアは、全体入力配列を反転し、その後停止する空間の代わりにポインタ速度走査入力、高速なポインタを使用することで、ポインタの速度との間の文字を反転。
時間O(N)
スペースO(n)は、
Java実装
1 クラスソリューション{ 2 公共 ボイド reverseWords(CHAR [] S){ 3 逆方向(S、0、s.length - 1 )。 4 INT R = 0 。 5 しばらく(R < s.length){ 6 int型 L = R。 7 一方、(R <s.length && S [R] = ''!){ 8 R ++ 。 9 } 10 逆(S、L、R - 1 )。 11 R ++ 。 12 } 13 } 14 15 プライベート ボイド逆(CHAR [] S、int型 Iを、int型J){ 16 ながら(I < J){ 17 チャー一時= S [i]は、 18の S [I] = S [J]。 19の S [J] = TEMP。 20 I ++ ; 21 j-- 。 22 } 23 } 24 }
JavaScript実装
1 / * * 2 * @param {文字[]}秒 3 の代わりに、場所の変更を、何も返さないでください* @return {空}。 4 * / 5 のvar reverseWords = 機能(S){ 6 ヘルパー(S、0、s.length - 1 )。 7 LETのR = 0 。 8 一方、(R < s.length){ 9 LET 1 = R。 10 一方、(R <s.length && S [R] = ''!){ 11 R ++ 。 12 } 13 ヘルパー(S、L、R - 1 )。 14 R ++ 。 15 } 16 }。 17 18 のvarヘルパー= 関数(S、I、J){ 19 ながら(I < J){ 20 LETの一時= S [i]は、 21の S [I] = S [J]。 22の S [J] = TEMP。 23 I ++ ; 24 j-- ; 25 } 26 }