letter-combinations-of-a-phone-numbe

Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

题目是:在拼音9键上含有字母的数字键上取字母 输入23 即从数字键2和3上各取一个字母组合 9种情况

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        int index=0;
        dfs(digits,index);
        return _lecom;
    }
    void dfs(string digits,int index)
    {
        if(index==digits.length())
            _lecom.push_back(temp);
        else
        {
             int i,j=digits[index]-'0';
             //取数字对应的字母
             string str=ninekey[j];
             for(i=0;i<str.length();++i)
             {
               string str1=temp;
               temp+=str[i];
               dfs(digits,index+1);
               temp=str1;    //为了防止在temp.length()==digit.length()还继续向temp里添加字符
             }              //以及下次循环时只要再加下一个字母即可
        }
        
    }
private:
    //拼音九键
    string ninekey[10]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    vector<string> _lecom;
    string temp="";//添加字母至temp直到temp.length()到digit.length()
};

遇到的问题:                          

                                                   输入 232 先push_back(ada) 然后temp保存ad 继续循环再加字母b再push_back(adb)继续循环下去向回退

猜你喜欢

转载自blog.csdn.net/WhiskyCocktail/article/details/80942340
今日推荐