神奇的字符串:JavaScript 中的问题
javascriptweb developmentfront end technology
问题
神奇的字符串 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 作为输入,并要求返回神奇字符串中第一个 num 数字中 '1'的数量str。
例如,如果函数的输入是 −
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