电话号码的组合 力扣
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:
输入:digits = ""
输出:[]示例 3:
输入:digits = "2"
输出:["a","b","c"]来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number
解题思路:
这道题是Vector和string的结合体,又因为道题的字符长度有限,所以使用递归来解决。
具体思路:文章来源:https://www.toymoban.com/news/detail-544735.html
拿出每一个数组所对应的字符,然后在一起,通过递归的方式以string的函数结合起来文章来源地址https://www.toymoban.com/news/detail-544735.html
class Solution {
//使用映射来解决
string str[10] = { "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };
public:
void combin(string digits, int num, string com_r, vector<string>& arr)
{
//递归结束条件
if (num == digits.size())
{
arr.push_back(com_r);
return;
}
//使用数组来解决
int leve = digits[num] - '0';
string com = str[leve];
for (int i = 0; i < com.size(); i++)
{
combin(digits, num + 1, com_r+com[i], arr);
}
}
vector<string> letterCombinations(string digits)
{
//创建一个顺序表
vector<string> arr;
//判断是否为空
if(digits.empty())
{
return arr;
}
创建一个函数解决问题
combin(digits, 0, "", arr);
return arr;
}
};
到了这里,关于电话号码的组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!