题目:
Given a string containing digits from 2-9
inclusive, 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. Note that 1 does not map to any letters.
Example:
Input: "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
代码:
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> letters;
if(digits == "")
return letters;
for(int i = 0; i<digits.length(); i++)
{
string cur;
switch(digits[i])
{
case '2':cur = "abc";break;
case '3':cur = "def";break;
case '4':cur = "ghi";break;
case '5':cur = "jkl";break;
case '6':cur = "mno";break;
case '7':cur = "pqrs";break;
case '8':cur = "tuv";break;
case '9':cur = "wxyz";break;
}
int cur_strnum = letters.size();
for(int j = 0; j<cur_strnum; j++)
{
vector<string>::iterator iter = letters.begin();
string cur_str = letters[0];
letters.erase(iter);
for(int k = 0; k<cur.length(); k++)
{
letters.push_back(cur_str+cur[k]);
}
}
if(cur_strnum < 1)
{
for(int k = 0; k<cur.length(); k++)
{
string tmp;
tmp += cur[k];
letters.push_back(tmp);
}
}
}
return letters;
}
};