本文实例讲述了JS实现电话号码的字母组合算法。分享给大家供大家参考,具体如下:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
var letterCombinations = function(digits) {
const mappings = {
'2': ['a', 'b', 'c'],
'3': ['d', 'e', 'f'],
'4': ['g', 'h', 'i'],
'5': ['j', 'k', 'l'],
'6': ['m', 'n', 'o'],
'7': ['p', 'q', 'r', 's'],
'8': ['t', 'u', 'v'],
'9': ['w', 'x', 'y', 'z']
};
if (!digits || digits.length === 0) return [];
if (digits.length === 1) {
return mappings[digits];
}
let result = [];
let set1 = letterCombinations(digits.substr(0, 1));
let set2 = letterCombinations(digits.substr(1));
for (let i = 0; i < set1.length; i++) {
for (let j = 0; j < set2.length; j++) {
result.push(set1[i] + set2[j]);
}
}
return result;
};
console.log(letterCombinations('23'))
var letterCombinations1 = function(digits) {
var map = {
"2": ["a", "b", "c"],
"3": ["d", "e", "f"],
"4": ["g", "h", "i"],
"5": ["j", "k", "l"],
"6": ["m", "n", "o"],
"7": ["p", "q", "r", "s"],
"8": ["t", "u", "v"],
"9": ["w", "x", "y", "z"]
};
var rtn = map[digits[0]];
digits = digits.substr(1);
digits.split("").forEach(function(digit) {
var t = [];
map[digit].forEach(function(letter) {
t = t.concat(rtn.map(function(item) {
return item + letter;
}));
});
rtn = t;
});
return rtn === undefined ? [] : rtn;
};
console.log(letterCombinations1('32'))
使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。