***(leetcode_string) Letter Combinations of a Phone Number

Letter Combinations of a Phone Number

 Total Accepted: 24684 Total Submissions: 93313My Submissions

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"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

Show Tags
Have you met this question in a real interview? 
Yes
 
No

Discuss

回溯法~ 

class Solution {
    map<char, vector<char> > dict;
    vector<string> ret;
    void createDict(string digit){
         dict.clear();
         dict['2'].push_back('a');
         dict['2'].push_back('b');
         dict['2'].push_back('c');
         dict['3'].push_back('d');
         dict['3'].push_back('e');
         dict['3'].push_back('f');
         dict['4'].push_back('g');
         dict['4'].push_back('h');
         dict['4'].push_back('i');
         dict['5'].push_back('j');
         dict['5'].push_back('k');
         dict['5'].push_back('l');
         dict['6'].push_back('m');
         dict['6'].push_back('n');
         dict['6'].push_back('o');
         dict['7'].push_back('p');
         dict['7'].push_back('q');
         dict['7'].push_back('r');
         dict['7'].push_back('s');
         dict['8'].push_back('t');
         dict['8'].push_back('u');
         dict['8'].push_back('v');
         dict['9'].push_back('w');
         dict['9'].push_back('x');
         dict['9'].push_back('y');
         dict['9'].push_back('z');
        
    }
    void dfs(string str, int maxDep, int curDep, string ans){
        if(curDep==maxDep)
            ret.push_back(ans);
        int i;
        for(i=0;i<dict[str[curDep]].size();i++)
            dfs(str, maxDep, curDep+1, ans+dict[str[curDep]][i]);
    }
public:
    vector<string> letterCombinations(string digits) {
        createDict(digits);
        dfs(digits, digits.length(), 0, "");
        return ret;
    }
};



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章