17. Letter Combinations of a Phone Number

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].


image.png

思路:

這道題讓我們球電話號碼的字母組合,即數(shù)字2到9中每個數(shù)字可以代表若干個字母,然后給出一串數(shù)字,求出所有肯呢個的組合,類似的題目有全排列問題,combinations問題 subsets子集合等,用遞歸來解。首先建立一個字典數(shù)組來記錄每個字母對應(yīng)的數(shù)字。然后還需要一個變量level來記錄當前生成的字符串的字符個數(shù),當?shù)扔跀?shù)字長度時就停止遍歷,彈出最后一個數(shù),接著往下找可能的情況,代碼如下:

var letterCombinations = function(digits) {
        var res=[];
        if(digits.length==0) return res;
        var dict=['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];
        DFS(digits,0,dict,"",res);
        return res;

        function DFS(digits,level,dict,out,res){
            if(level==digits.length){
                res.push(out);
            }else{
                var str=dict[digits[level]-2];
                for (var i = 0; i < str.length; i++) {
                    out+=str[i];
                    DFS(digits,level+1,dict,out,res);
                    out=out.substr(0,out.length-1);
                }
            }
        }

      };
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容