Open
Description
题目描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
算法
遍历
答案
/**
* 遍历
*/
var letterCombinations = function(digits) {
// #1 判断字符串是否为空
if (!digits) return [];
// #2 设置一个结果数组
let res = [''];
// #3 设置一个map数组
const map = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'];
// #4 遍历digits
for (let i = 0; i < digits.length; i++) {
// #5 取数
let digit = parseInt(digits[i]);
let d_str = map[digit - 2];
let temp = [];
// #6 遍历结果数组
for (let j = 0; j < res.length; j++) {
let item = res[j];
// #7 结合每个结果和d_str的字母,放入temp
for (let k = 0; k < d_str.length; k++) {
temp.push(`${item}${d_str[k]}`);
}
}
// #8 赋值结果
res = temp;
}
return res;
};