輸入:"23" 輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].git
let letterCombinations = (digits) => {
if (digits.length == 0) return [] //爲空 狀況
let map = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
let arr = digits.split('')
let resarr = arr.map(item => map[item])
if (resarr.length == 1) return resarr[0].split('')//僅輸入一個 狀況
let compute = (arr) => {//組合傳入數組的前兩項 ['ab','cd','ewe']
let temp = [] //['ac','ad','bc','bd']
// 將前兩項組合結果放入臨時數組中
for (let i = 0; i < arr[0].length; i++) {
for (let j = 0; j < arr[1].length; j++) {
temp.push(`${arr[0][i]}${arr[1][j]}`)
}
}
// [['ac','ad','bc','bd'],'ewe']
arr.splice(0, 2, temp)//將原來的數組前兩項結果用臨時數組替換
if (arr.length > 1) {
compute(arr)
}
return arr[0]
}
return compute(resarr)
};
複製代碼
你也能夠用這種哈希表的形式github
let map = { //你也能夠用這種哈希表的形式
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz',
}
複製代碼
若是喜歡或者想要更多的信息,能夠戳這裏,歡迎starweb