力扣17. 电话号码的字母组合
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣17. 电话号码的字母组合相关的知识,希望对你有一定的参考价值。
暴力模拟:
class Solution {
public:
vector<string> letterCombinations(string digits) {
string s[15];
s[0]="0",s[1]="!@#",s[2]="abc",s[3]="def",s[4]="ghi",s[5]="jkl";
s[6]="mno",s[7]="pqrs",s[8]="tuv",s[9]="wxyz";
vector<string> ve;
if(digits.size()==0) return ve;
if(digits.size()==1)
{
for(int i=0;i<s[digits[0]-'0'].size();i++)
{
string temp="";
temp+=s[digits[0]-'0'][i];
ve.push_back(temp);
}
return ve;
}
if(digits.size()==2)
{
for(int i=0;i<s[digits[0]-'0'].size();i++)
for(int j=0;j<s[digits[1]-'0'].size();j++)
{
string x; x+=s[digits[0]-'0'][i],x+=s[digits[1]-'0'][j];
ve.push_back(x);
}
return ve;
}
if(digits.size()==3)
{
for(int i=0;i<s[digits[0]-'0'].size();i++)
for(int j=0;j<s[digits[1]-'0'].size();j++)
for(int k=0;k<s[digits[2]-'0'].size();k++)
{
string x; x+=s[digits[0]-'0'][i],x+=s[digits[1]-'0'][j],x+=s[digits[2]-'0'][k];
ve.push_back(x);
}
return ve;
}
if(digits.size()==4)
{
for(int i=0;i<s[digits[0]-'0'].size();i++)
for(int j=0;j<s[digits[1]-'0'].size();j++)
for(int k=0;k<s[digits[2]-'0'].size();k++)
for(int z=0;z<s[digits[3]-'0'].size();z++)
{
string x; x+=s[digits[0]-'0'][i],x+=s[digits[1]-'0'][j],x+=s[digits[2]-'0'][k];
x+=s[digits[3]-'0'][z];
ve.push_back(x);
}
return ve;
}
return ve;
}
};
爆搜方法:
class Solution {
public:
string str[15]=
{
"","","abc","def","ghi","jkl","mno",
"pqrs","tuv","wxyz"
};
vector<string> ve;
vector<string> letterCombinations(string digits) {
if(digits.size()==0) return ve;
dfs(digits,0,"");
return ve;
}
void dfs(string s,int index,string path)
{
if(index==s.size()) ve.push_back(path);
else
{
for(int i=0;i<str[s[index]-'0'].size();i++)
{
dfs(s,index+1,path+str[s[index]-'0'][i]);
}
}
}
};
以上是关于力扣17. 电话号码的字母组合的主要内容,如果未能解决你的问题,请参考以下文章