题目:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = “23” 输出:[“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]
示例 2:
输入:digits = “” 输出:[]
示例 3:
输入:digits = “2” 输出:[“a”,”b”,”c”]
提示:
- 0 <= digits.length <= 4
digits[i] 是范围 [‘2’, ‘9’] 的一个数字。
let arr1 = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];// 处理字符的排列组合function fn(arr) { //["abc", "def","ghi"]let res = [];for(let i=0;i<arr[0].length;i++) { //"abc"for(let j=0; j<arr[1].length;j++) { //"def"res.push(arr[0][i] + arr[1][j])}}// console.log(res) //["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]//splice(替换起始位置,替换结束位置(不包括在内),替换的内容)arr.splice(0,2,res)// console.log(arr); // [Array(9), "ghi"]if(arr.length > 1) {fn(arr)}return arr[0]}var letterCombinations = function (digits) { //'23'let digitsArr = digits.split('') // ["2", "3"]let letters = []; //["abc", "def"]digitsArr.forEach(element => {letters.push(arr1[element])});if(letters.length > 1) {return fn(letters);} else { //length=1 ['abc'] => ['a','b','c']if(letters[0]) {return letters[0].split('');} else {return []}}// console.log(digitsArr);// console.log(letters);};console.log(letterCombinations('234'))
