马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目
给定一个仅包含数字 2-9 的字符串,返回全部它能表示的字母组合。答案可以按 恣意次序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2:
输入:digits = “”
输出:[]
示例 3:
输入:digits = “2”
输出:[“a”,“b”,“c”]
来源:力扣 17. 电话号码的字母组合
思路(注意事项)
与之前组合不同的地方在于,这个题是不同集合组合的回溯。
纯代码
- class Solution {
- private:
- string tmp;
- vector<string> ans;
- string s[10] =
- {
- "", // 0
- "", // 1
- "abc", // 2
- "def", // 3
- "ghi", // 4
- "jkl", // 5
- "mno", // 6
- "pqrs", // 7
- "tuv", // 8
- "wxyz", // 9
- };
- void backtracking (string digits, int index)
- {
- if (digits.size() == index)
- {
- ans.push_back(tmp);
- return;
- }
- string digit = s[digits[index] - '0'];
- for (int i = 0; i < digit.size(); i ++)
- {
- tmp.push_back(digit[i]);
- backtracking (digits, index + 1);
- tmp.pop_back();
- }
- }
- public:
- vector<string> letterCombinations(string digits) {
- if (digits.size() == 0) return ans;
- backtracking (digits, 0);
- return ans;
- }
- };
复制代码 题解(加注释)
- class Solution {
- private:
- string tmp; // 存储当前正在构建的字母组合,即叶子节点
- vector<string> ans; // 存储所有字母组合的结果,即答案
- string s[10] = // 数字到字母的映射表
- {
- "", // 0
- "", // 1
- "abc", // 2
- "def", // 3
- "ghi", // 4
- "jkl", // 5
- "mno", // 6
- "pqrs", // 7
- "tuv", // 8
- "wxyz", // 9
- };
- // 回溯函数
- void backtracking(string digits, int index) {
- // 如果当前组合的长度等于 digits 的长度,说明找到一个有效的组合
- if (digits.size() == index) {
- ans.push_back(tmp); // 将当前组合加入结果集
- return;
- }
- // 获取当前数字对应的字母集合
- string digit = s[digits[index] - '0'];
- // 遍历当前数字对应的所有字母
- for (int i = 0; i < digit.size(); i++) {
- tmp.push_back(digit[i]); // 将当前字母加入组合
- backtracking(digits, index + 1); // 递归处理下一个数字
- tmp.pop_back(); // 回溯,移除当前字母
- }
- }
- public:
- // 主函数:生成所有字母组合
- vector<string> letterCombinations(string digits) {
- if (digits.size() == 0) return ans; // 如果输入为空,直接返回空结果
- backtracking(digits, 0); // 从第 0 个数字开始回溯
- return ans; // 返回所有字母组合
- }
- };
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |