<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          每日算法:翻轉字符串里的單詞

          共 2874字,需瀏覽 6分鐘

           ·

          2021-09-01 07:43


          點擊上方 三分鐘學前端,關注公眾號

          回復交流,加入前端編程面試算法每日一題群


          面試官也在看的前端面試資料


          給定一個字符串,逐個翻轉字符串中的每個單詞。

          示例 1:

          輸入: "the sky is blue"
          輸出: "blue is sky the"

          示例 2:

          輸入: "  hello world!  "
          輸出: "world! hello"
          解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。

          示例 3:

          輸入: "a good   example"
          輸出: "example good a"
          解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

          說明:

          • 無空格字符構成一個單詞。
          • 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
          • 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

          解法一:正則 + JS API

          var reverseWords = function(s{
              return s.trim().replace(/\s+/g' ').split(' ').reverse().join(' ')
          };

          解法二:雙端隊列(不使用 API)

          雙端隊列,故名思義就是兩端都可以進隊的隊列

          解題思路:

          • 首先去除字符串左右空格
          • 逐個讀取字符串中的每個單詞,依次放入雙端隊列的對頭
          • 再將隊列轉換成字符串輸出(已空格為分隔符)

          畫圖理解:

          代碼實現(xiàn):

          var reverseWords = function(s{
              let left = 0
              let right = s.length - 1
              let queue = []
              let word = ''
              while (s.charAt(left) === ' ') left ++
              while (s.charAt(right) === ' ') right --
              while (left <= right) {
                  let char = s.charAt(left)
                  if (char === ' ' && word) {
                      queue.unshift(word)
                      word = ''
                  } else if (char !== ' '){
                      word += char
                  }
                  left++
              }
              queue.unshift(word)
              return queue.join(' ')
          };

          最后

          歡迎關注「三分鐘學前端」,回復「交流」自動加入前端三分鐘進階群,每日一道編程算法面試題(含解答),助力你成為更優(yōu)秀的前端開發(fā)!

          號內(nèi)回復:

          網(wǎng)絡」,自動獲取三分鐘學前端網(wǎng)絡篇小書(90+頁)
          JS」,自動獲取三分鐘學前端 JS 篇小書(120+頁)
          算法」,自動獲取 github 2.9k+ 的前端算法小書
          面試」,自動獲取 github 23.2k+ 的前端面試小書
          簡歷」,自動獲取程序員系列的 120 套模版
          》》面試官也在看的前端面試資料《《
          “在看和轉發(fā)”就是最大的
          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日批免费| 成人三级在线视频 | 欧美日韩在线观看中文字幕 | 爱爱综合日韩 | 成人网站免费视频久久网 |