力扣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. 电话号码的字母组合的主要内容,如果未能解决你的问题,请参考以下文章

电话号码的字母组合--力扣

17. 电话号码的字母组合

LeetCode #17 电话号码的字母组合

力扣刷题:电话号码的字母组合(java实现)

力扣刷题:电话号码的字母组合(java实现)

17. 电话号码的字母组合(递归+回溯)