#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num string字符串
* @return string字符串vector
*/
//输入数字获取对应的字符串
string numberInt(int num) {
switch (num) {
case 2:
return "abc";
case 3:
return "def";
case 4:
return "ghi";
case 5:
return "jkl";
case 6:
return "mno";
case 7:
return "pqrs";
case 8:
return "tuv";
case 9:
return "wxyz";
}
return "";
}
vector<string> phoneNumber(string num) {
// write code here
int size = num.size();
vector<string> res;
queue<string> que;
for (int i = 0; i < size; i++) {
//接受当前输入数字对应的字符串
string temp = numberInt(num[i] - '0');
if (i == 0) { // i=0,初始化队列
for (int j = 0; j < temp.size(); j++) {
que.push(string{temp[j]});
}
} else { // 进行bfs
int quesize = que.size();
for (int i = 0; i < quesize; i++) {
string front = que.front();
for (int j = 0; j < temp.size(); j++) {
//记得进行一次回溯
front.push_back(temp[j]);
que.push(front);
front.pop_back();
}
que.pop();
}
}
}
//结果输入到res中即可
while (!que.empty()) {
res.push_back(que.front());
que.pop();
}
return res;
}
};