电话号码组合,老师的代码考虑少了两种情况,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回答
-
嗯,我们重点在算法思路讲解,没有刻意去做极端的边界处理,这样讲容易打破算法思路的连续性,不过能看出大家的严谨,接下来会把大家的问题集中优化,建议去慕课git提issue
10
相似问题