1. 程式人生 > >leetcode#17. Letter Combinations of a Phone Number

leetcode#17. Letter Combinations of a Phone Number

commons 註意 構建 media ber str http wiki pan

給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。

給出數字到字母的映射如下(與電話按鍵相同)。註意 1 不對應任何字母。

技術分享圖片

示例:

輸入:"23"
輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

說明:
盡管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。

class Solution {
public:

    vector<string> letterCombinations(string digits)
    {
        if(digits.empty()) return
{}; vector<string> result; result=letterCombinations(digits,0); return result; }   //是一個遞歸,如果digits是123那麽我只要構造23,然後每個元素都加上1對應的三個字母即可 vector<string> letterCombinations(string& digits,int index)//構建從index~digit.size()-1 { if(index>=digits.size()) return
{}; auto str=col[string()+digits[index]]; vector<string> result; for(int i=0;i!=str.size();++i) { string re; auto vec=letterCombinations(digits,index+1); if(vec.empty()) result.push_back(string()+str[i]);
else { for(auto & elem:vec) { auto temp=string()+str[i]+elem; result.push_back(temp); } } } return result; } private:
//這裏第一個string可以改成char.... unordered_map
<string,string> col={{"2","abc"},{"3","def"},{"4","ghi"},{"5","jkl"},{"6","mno"},{"7","pqrs"},{"8","tuv"},{"9","wxyz"}}; };

leetcode#17. Letter Combinations of a Phone Number