本题与leetcode 22 类似,使用递归的方式
void letter(std::vector<std::string> &a,std::string digits,int number,std::map<char,std::vector<char>> m,std::string str){ int len=digits.size(); if(number==len){ a.push_back(str); return; } char c=digits[number]; std::vector<char> ss=m.at(c); for(int i=0;i<ss.size();i++){ str+=ss[i]; letter(a,digits,number+1,m,str); str = str.substr(0, str.length() - 1); } } std::vector<std::string> letterCombinations(std::string digits) { std::vector<std::string> a; std::map<char,std::vector<char>> m; m.insert(std::pair<char,std::vector<char>>('2',{'a','b','c'})); m.insert(std::pair<char,std::vector<char>>('3',{'d','e','f'})); m.insert(std::pair<char,std::vector<char>>('4',{'g','h','i'})); m.insert(std::pair<char,std::vector<char>>('5',{'j','k','l'})); m.insert(std::pair<char,std::vector<char>>('6',{'m','n','o'})); m.insert(std::pair<char,std::vector<char>>('7',{'p','q','r','s'})); m.insert(std::pair<char,std::vector<char>>('8',{'t','u','v'})); m.insert(std::pair<char,std::vector<char>>('9',{'w','x','y','z'})); if(digits.size()==0) return a; letter(a,digits,0,m,""); return a; }
