串聯全部單詞的子串

export default (str, words) => {
  // 保存結果
  let result = []
  // 記錄數組的長度,作邊界條件計算
  let num = words.length
  // 遞歸函數體
  let range = (r, _arr) => {
    if (r.length === num) {
      result.push(r)
    } else {
      _arr.forEach((item, idx) => {
        let tmp = [].concat(_arr)
        tmp.splice(idx, 1)
        range(r.concat(item), tmp)
      })
    }
  }
  range([], words)
  // [0, 9, -1] filter 以後[0,9]
  return result.map(item => {
    return str.indexOf(item.join(''))
  }).filter(item => item !== -1).sort()
}
相關文章
相關標籤/搜索