leetcode 17:电话号码的字母组合
本题与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;
}