17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com)
电话号码的字母组合
- DFS
- 回溯
class Solution {
public:
// 将9键映射到数字
const string mp[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",};
vector<string> ans;
string path;
void DFS(string& digits, int index) {
if (index == digits.size()) {
ans.emplace_back(path);
return;
}
// 将字符串转化为数字,根据mp来查看对应了那些字母,再取来组合。
int numIndex = digits[index] - '0';
for (int i = 0; i < mp[numIndex].size(); ++i) {
path.push_back(mp[numIndex][i]);
DFS(digits, index + 1);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
// 参数只有digits
if (digits.size() == 0) return ans;
DFS(digits, 0);
return ans;
}
};