神奇字串: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
廣告