leetcode17 电话号码的字母组合(Medium)
题目来源:leetcode17 电话号码的字母组合
题目描述:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
2 : a b c
3 : d e f
4 : g h i
5 : j k l
6 : m n o
7 : p q r s
8 : t u v
9 : w x y z
解题思路:
回溯
class Solution {
public:
map<char,vector<char>> m{{'2',{'a','b','c'}},{'3',{'d','e','f'}},{'4',{'g','h','i'}},{'5',{'j','k','l'}},{'6',{'m','n','o'}},{'7',{'p','q','r','s'}},{'8',{'t','u','v'}},{'9',{'w','x','y','z'}}};
vector<string> ans;
string path;
void backtrack(string digits,int index){
if(index==digits.size()) {
ans.push_back(path);
return;
}
for(int i=0;i<m[digits[index]].size();i++){
path.push_back(m[digits[index]][i]);
backtrack(digits,index+1);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if(digits.size()==0) return ans;
backtrack(digits,0);
return ans;
}
};