利用队列,和map解决
class Solution {
public:
vector<string> letterCombinations(string digits) {
int len=digits.size();
vector<string> res;
map<char,string> m={{'2',"abc"},{'3',"def"},{'4',"ghi"},{'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};
queue<string> que;
//将第一个数的字母存下来
for(int i=0;i<m[digits[0]].size();i++)
{
string str ;
str.push_back(m[digits[0]][i]);//将char转为string
que.push(str);
}
for(int i=1;i<len;i++)
{
int length = m[digits[i]].size();//第i个数字的字母字母长度
int quelen= que.size();//当前队列长度
for(int j=0;j<quelen;j++)
{ string s;
for(int k=0;k<length;k++)
{
s=que.front()+m[digits[i]][k];
que.push(s);
}
que.pop();
}
}
while(!que.empty()){
res.push_back(que.front());
que.pop();
}
return res;
}
};