leetcode17 电话号码的字母组合 dfs

就dfs吧....

然后,我傻了。前一道题不用考虑空,这道题就要考虑。。。。

还有注意vector要引用传递

class Solution {
  
public: 
    void dfs(string temp,vector<string>&ret,string digits,int index,string* str,int len)
    {
        if(index==len)
        {
            ret.push_back(temp);
            return;
        }
        else
        {
            int n=str[(digits[index]-'2')].length();
            for(int i=0;i<n;i++)
            dfs((temp+str[(digits[index]-'2')][i]),ret,digits,index+1,str,len);
        }
    }

public:
    vector<string> letterCombinations(string digits) {
        vector<string>ret;
        if(digits=="")
            return ret;
        string str[10] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        int len=digits.length();
        string temp="";
        this->dfs(temp,ret,digits,0,str,len);
        return ret;
    }
};

 另外有点震惊:这是机器性能太强还是测试用例太少奥

猜你喜欢

转载自www.cnblogs.com/lqerio/p/11756145.html