查找DA,B(n)的第n个字符的算法

时间:2019-03-15 06:38:49

标签: javascript algorithm

这是我的问题的描述。对于任意两个字符串变量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. getNthPosition(“ 1415”,“ 8979”,10)应该等于9
  3. getNthPosition(“ abc”,“ 435d”,100)应该等于b
  4. 答案对于任何给定的输入均应有效

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));

1 个答案:

答案 0 :(得分:-1)

您可能会在每次迭代中使用一个要推送到的字符串数组,以便可以从数组的length - 2length - 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));