电话号码组合,老师的代码考虑少了两种情况,leetcode运行不通过

来源:3-3 电话号码组合-代码演示

黄ty的前端血泪学习史

2019-02-17

老师的代码考虑少了str为空以及str只有1位数字这两种情况,leetcode运行不通过。以下是我试着改进的代码,考虑了str为空和str只有1位数这两种情况。

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(str) {
let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
  let num = str.split('')
  let code = []
  num.forEach(item => {
    if (map[item]) {
      code.push(map[item])
    }
  })
  if (str == '') return []
  else if (str.length == 1) {
    return code[0].toString().split('')
  } else {
    let comb = (arr) => {
      let tmp = []
      for (let i = 0, il = arr[0].length; i < il; i++) {
        for (let j = 0, jl = arr[1].length; j < jl; j++) {
          tmp.push(`${arr[0][i]}${arr[1][j]}`)
        }
      }
      arr.splice(0, 2, tmp)
      if (arr.length > 1) {
        comb(arr)
      } else {
        return tmp
      }
      return arr[0]
    }
    return comb(code)
  }
    
};

图片描述

写回答

1回答

快乐动起来呀

2019-02-18

嗯,我们重点在算法思路讲解,没有刻意去做极端的边界处理,这样讲容易打破算法思路的连续性,不过能看出大家的严谨,接下来会把大家的问题集中优化,建议去慕课git提issue

1
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程