题目描述
给定一个仅包含数字
2-9
的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例
输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
实现
void getPhone(vector<string>& data, string& digits, int index, vector<string>& res, string temp)
{
if (index == digits.length())
{
res.push_back(temp);
} else {
int m = digits[index] - '2';
for (int i = 0; i < data[m].size(); i++)
{
temp += data[m][i];
index++;
getPhone(data, digits, index, res, temp);
temp = temp.substr(0, temp.length() - 1);
index --;
}
}
}
vector<string> letterCombinations(string digits) {
vector<string> data;
data.push_back("abc");
data.push_back("def");
data.push_back("ghi");
data.push_back("jkl");
data.push_back("mno");
data.push_back("pqrs");
data.push_back("tuv");
data.push_back("wxyz");
vector<string> res;
string temp;
if (digits.length() == 0) {
return res;
}
getPhone(data, digits, 0, res, temp);
return res;
}