leetcode#17. Letter Combinations of a Phone Number
阿新 • • 發佈:2018-09-29
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