题目
Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
例子:
Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
思路
三层循环,依次遍历得到结果。
代码
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> dict = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
vector<string> result;
if (digits=="") {
return result;//digits为空时需直接返回结果
}
result.push_back("");
for (int i=0; i<digits.size(); i++) {
string singleDigit = dict[digits[i]-'0'];
if (singleDigit == "") {
continue;
}
vector<string> tmp;
for (int j=0; j<singleDigit.size(); j++) {
int k=0;
long size = result.size();
for (k=0; k<size; k++) {
tmp.push_back(result[k]+singleDigit[j]);
}
}
result.swap(tmp);//交换tmp和result,可以得到tmp的值,不用考虑result删除元素问题
}
return result;
}
};