如何以递归方式查找字符串中的一组字符?

时间:2015-10-28 04:40:53

标签: javascript string algorithm search recursion

我需要编写一个函数,其中给定一组字符key找到字符串str中出现的唯一实例的数量,以便

findKeys("fooo","foo") //returns 3
//foo-
//fo-o
//f-oo

findKeys("foobarfoo","obo") //returns 4]
//--ob----o 
//-o-b---o-
//-o-b----o
//--ob---o-

以下是我到目前为止的功能,我不知道我错过了什么,但我知道它没有找到所有的实例,所以它不是正确迭代字符串。

function findKeys(str, key) {
  var count = count || 0;

  if(str.length <= key.length || key.length === 1) {

    if(str.slice(0, key.length) === key) {
      return 1
    }

    return 0
  }

  if(str[0] === key[0]) {
    count += findKeys(str.slice(1), key.slice(1))
  }

  count += findKeys(str.slice(1), key)

  return count
}

1 个答案:

答案 0 :(得分:2)

只需删除

|| key.length === 1

来自你的功能。我不确定你为什么会在那里 - 当key.length为1但str.length为&gt;时,最终会得到错误的结果。 key.length(因为您没有考虑在str中跳过某些字符并使用键匹配字符串后面的字符的情况)。