<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>

          每日算法:翻轉(zhuǎn)字符串里的單詞

          共 2520字,需瀏覽 6分鐘

           ·

          2021-09-02 21:57


          點(diǎn)擊上方 三分鐘學(xué)前端,關(guān)注公眾號(hào)

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


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

          給定一個(gè)字符串,逐個(gè)翻轉(zhuǎn)字符串中的每個(gè)單詞。

          示例 1:

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

          示例 2:

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

          示例 3:

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

          說(shuō)明:

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

          解法一:正則 + JS API

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

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

          雙端隊(duì)列,故名思義就是兩端都可以進(jìn)隊(duì)的隊(duì)列

          解題思路:

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

          畫圖理解:

          代碼實(shí)現(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(' ')
          };

          最后

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

          號(hào)內(nèi)回復(fù):

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  无码对白 | 国产一区二区无码午夜久久久豆花av | 欧美日韩高清在线观看 | 欧美成人在线免费 | 中文无码在线播放 |