LeetCodeのJavaScript解答第151題:反転文字列の単語(Reverse Words in a String)

2384 ワード

Time:2019/4/20 Title:Reverse Words In a String Difficulty:Midumn Author:小鹿
タイトル:Reverse Words In a String(文字列を反転させる単語)
Gven an input string,reverse the string word.
文字列を指定して、文字列の各単語を1つずつ反転させます.
Example 1:
Input: "the sky is blue"
Output: "blue is sky the"
Example 2:
Input: "  hello world!  "
Output: "world! hello"
Explanation: Your reversed string should not contain leading or trailing spaces.
Example 3:
Input: "a good   example"
Output: "example good a"
Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.
ノート:
  • Aワードis defined as a sequence of non-space characters.
  • Input string may contain leading or triling spaces.However,your reversed string shound not contain leading or triling spaces.
  • You need to reduce multiple spaces between twords to a single space in the reversed string.
  • 説明:
  • 無スペース文字で単語を構成します.
  • 入力文字列は、前または後ろに余分なスペースを含むことができますが、反転した文字は含まれません.
  • 二つの単語の間に余分なスペースがあれば、反転後の単語間のスペースを一つだけ含むように減らします.
  • Solve:
    π問題分析
    すべての単語を倒順に出力し、単語間のスペースを一つだけ残して、文の前後のスペースを全部クリアします.問題の具体的な要求を通じて、私達はもう問題に対して分析してクリアしました.文の前後のスペースをどうやって消しますか?
    πアルゴリズムの考え方
    1)文の前のすべてのスペースをスキップします.
    2)変数によって単語を反転し、次のスペースに出会う前に完全な単語を巡回します.
    3)空欄があったら、単語を逆順につづり合わせます.
    4)末尾のスペースを消去します.
    π試験用例
    1)空の文字列
    2)中間スペースが1より大きい文字列.
    3)単語に句読点がある文字列.
    πコード実現
     var reverseWords = function(s) {
         //               
         if(s.length === 0) return "";
    
         let [index,len] = [0,s.length];
         let word = "";
         let result = "";
    
         while(index < len){
             //     
             while(index < len && s.charAt(index) == ' '){
                 index ++;
             }
    
             //     
             while(index < len && s.charAt(index) !== ' '){
                 word = `${word}${s.charAt(index)}`;
                 index ++;
             }
             //   
             result = word + ' ' + result;
             word = "";
         }
         return result.trim(); 
     };
    
    LeetCodeオープンソースGithub倉庫に一緒に参加することを歓迎します.他の言語のコードを私に提出してもいいです.倉庫の上で堅持して子供達と一緒にカードを打って、共に私達の開源小倉庫を改善します!
    Github:https://github.com/luxiangqiang/JS-LeetCode
    私の個人番号に注目してください.「平凡に甘んじない私たち」は自分でプログラミングした物語を記録しました.