魔法字符串:JavaScript 中的问题
问题
一个神奇的字符串str只包含'1'和'2'并遵守以下规则-
字符串str很神奇,因为连接字符'1'和'2'的连续出现次数会生成字符串str本身。
字符串str的前几个元素如下-
str = "1221121221221121122……"
如果我们将str中连续的'1's和'2's分组,它将是-
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