https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/
<aside> 💡
本题与前两题组合的差别:
回溯三部曲:
map<char, vector<char>> mp;
string cur;
vector<string> ans;
void backtracking(int pos, const string& digits) {
if (cur.size() == digits.size()) {
ans.push_back(cur);
}
vector<char> dict = mp[digits[pos]];
for (int i = 0; i < dict.size(); ++i) {
cur.push_back(dict[i]);
backtracking(pos + 1, digits);
cur.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if (digits.empty()) {
return {};
}
mp.insert({ '2', {'a', 'b', 'c'}});
mp.insert({ '3', {'d', 'e', 'f'}});
mp.insert({ '4', {'g', 'h', 'i'}});
mp.insert({ '5', {'j', 'k', 'l'}});
mp.insert({ '6', {'m', 'n', 'o'}});
mp.insert({ '7', {'p', 'q', 'r', 's'}});
mp.insert({ '8', {'t', 'u', 'v'}});
mp.insert({ '9', {'w', 'x', 'y', 'z'}});
backtracking(0, digits);
return ans;
}