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> ans;
void fun(string temp,string digit)
{
if(digit.size()==0)
{
ans.push_back(temp);
return;
}
for(int i=0;i<mp[digit[0]].size();i++)//mp[digit[0]].size()控制字符串的长度,如2对应的字符串长3
{
fun(temp+mp[digit[0]][i],digit.substr(1));//利用递归调用,例如fun(a,3),fun(b,3).fun(c,3),其中substr(1)是指从字符串从1(0开始)位置后的字符子串
}
}
vector<string> letterCombinations(string digits)
{
if(digits.size()>0)
{
fun("",digits); //调用上面的函数
}
return ans;
}
C++17LeetCode 电话号码的字母组合(亲测可行,有注释)
最新推荐文章于 2022-05-30 10:18:21 发布