神奇字串:JavaScript 中的問題


問題

一種神奇字串 str 僅包含 '1' 和 '2',並遵守以下規則 -

字串 str 是神奇的,因為連線連續出現的字元 '1' 和 '2' 的數量會生成字串 str 本身。

字串 str 的前幾個元素如下 -

str = "1221121221221121122……"

如果我們對 str 中連續的 '1' 和 '2' 進行分組,它將是 -

1 22 11 2 1 22 1 22 11 2 11 22 ......

且每組內 '1' 或 '2' 的出現次數為 -

1 2 2 1 1 2 1 2 2 1 2 2 ......

我們可以看到上面的出現順序就是字串本身。

我們得到一個整數 num 作為輸入,並且我們需要返回神奇字串 str 中 num 的第一個數字中 '1' 的數量。

例如,如果函式的輸入是 -

const num = 6;

那麼輸出應該是 -

const output = 3;

輸出說明

神奇字串 S 的前 6 個元素是 "12211",它包含三個 1,因此返回 3。

示例

此程式碼為 -

 即時演示

const num = 6;
const magicalString = (num = 1) => {
   let ind = 12;
   let str = '1221121221221121122';
   while(str.length < num){
      const end = str.substring(str.length - 1) === '2' ? '1' : '2';
      str = parseInt(str.substring(ind, ind + 1)) === 2 ? str + end + end : str + end;
      ind++;
   };
   return (str.substring(0, num).match(/1/g)||[]).length;
};
console.log(magicalString(num));

輸出

控制檯中的輸出將為 -

3

更新於: 04-3-2021

389 次瀏覽

開啟您的事業

透過完成此課程獲得認證

開始
廣告