这是我的问题的描述。对于任意两个字符串变量A和B,我们将FA,B定义为序列(A,B,AB,BAB,ABBAB,...),其中每个术语是前两个变量的串联。
此外,我们将DA,B(n)定义为FA,B的第一项中至少包含n位数字的第n位数字。
示例:
让A =“ 1415”,B =“ 8979”。 n = 10我们希望找到DA,B(n)。
FA,B的前几项是:
“ 1415”
“ 8979”
“ 14158979”
“ 897914158979”
“ 9”就是答案
编写算法以找到DA,B(n)的第n个字符
编写解决方案时需要满足这些条件。
1和2要求已完成,但我不知道如何执行第三要求。任何建议。谢谢。
这是我的代码:
function getNthPosition(a,b,n) {
let output = '';
var tot2,ans;
tot2 = b + a;
ans = b+a+b;
for(var i = 0; i<=ans.length - 1; i++){
output += ans[i].split("").sort().join('');
output += "";
}
var nNumber = ans[n - 1];
return nNumber;
}
console.log(getNthPosition("1415","8979",10));
答案 0 :(得分:-1)
您可能会在每次迭代中使用一个要推送到的字符串数组,以便可以从数组的length - 2
和length - 1
中检索该字符串以连接在一起以构造下一个字符串:>
function getNthPosition(a, b, n) {
const strs = [a, b];
// input is 1-indexed, get a variable that's 0-indexed:
const targetIndex = n - 1;
while (strs[strs.length - 1].length < targetIndex) {
const newStr = strs[strs.length - 2] + strs[strs.length - 1];
strs.push(newStr);
}
const last = strs.pop();
return last[targetIndex];
}
console.log(getNthPosition("1415", "8979", 10));
console.log(getNthPosition("abc", "435d", 100));