思路:

每个数字对应的三个或者四个字母,输入的digits可能是几位数字组成

1.for(auto u:digits)  遍历digits中的数字,获取每一个单独的数字码

2.  for(auto c:chars[ ]) 根据数字码遍历得到对应的字母

3.     for(auto s:state) 对字母进行组合

4.      now.push_back(s+c)  

   return state

 

代码:

class Solution {
public:
    string chars[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    vector<string> letterCombinations(string digits) {
        if(digits.empty()) return vector<string>();

        vector<string> state(1,"");
        for(auto u:digits)  //遍历输入数字
        {
            vector<string>now;
            for(auto c:chars[u-'2']) //遍历输入数字所对应的char
            {
                for(auto s:state)
                {
                    now.push_back(s+c);
                }
            }
            state=now;
        }
        return state;
    }
};