题目描述
详细描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母
解题思路
- 第一眼看时不会做
- 看了题解,比较简单的DFS,注意一下substr的用法就行了
class Solution {
public:
map<char,string> mp = {{'2',"abc"},{'3',"def"},{'4',"ghi"},{'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};
vector <string> res;
void DFS(string cur,string next_digits){
if(next_digits.size()==0){
res.push_back(cur);
} else{
char digit = next_digits[0];
//cout<<digit<<endl;
string letters = mp[digit];
//cout<<letters<<endl;
for(int i=0;i<letters.size();i++){
DFS(cur+letters.substr(i,1),next_digits.substr(1));
}
}
}
vector<string> letterCombinations(string digits){
if(digits.size()==0){
return {};
}else{
DFS("",digits);
}
return res;
}
};