/**
* @param {number} n
* @param {number} k
* @return {number}
*/
var kthGrammar = function(n, k) {
// 0
// 01
// 01 10
let arr=['0']; // 将n行的字符串放入arr数组中
for( let i = 1; i < n; i ++ ){
// 第i - 1行字符串根据 0=>01, 1=>10规则生成第i行的字符串
let baseNum = arr[i - 1]; // 取数组上一次的字符串
let sumStr = ''; // 第i行的字符串
for( let j = 0; j < baseNum.length; j ++ ){
if( baseNum[j] == '0' ){
// 处理 0
sumStr += '01';
}else{
// 处理 1
sumStr += '10';
}
} // for j
arr.push( sumStr );
} // for i
// 取出 arr[arr.length - 1]字符串,然后取第k-1个字符
return parseInt( arr[arr.length-1].charAt(k-1));
};
老师,今天的779道题目,在我看来其实就是先得到第N行的字符串, 然后再取出第N行字符串的第K个字符,所以整个求解过程分成了两步。然后leetcode判题系统报错,然后我本地就写了一个测试文件:
随首kthGrammar(N),N很大时,函数中arr中字符串量惊人了,然后题解用了位运算,我是有点摸不着头脑,就只想到上述的方法,所以请老师帮忙解惑哈。。。