【LeetCode]ストリングIIで186リバース単語

文字列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 }

 

おすすめ

転載: www.cnblogs.com/aaronliu1991/p/12556582.html
おすすめ