您的位置:首页 > 其它

LeetCode算法题之Letter Combinations of a Phone Number

2015-03-16 16:24 423 查看
问题描述:

手机键盘上的数字对应着若干个字母,输入一组由数字组成的字符串,对应输出相应的字母的所有可能组合,顺序不限

解题思路:

暴力破解可以得到结果
相当于遍历一棵树,可以使用树的遍历算法DFS

25 / 25 test cases passed.
Runtime: 3 ms
vector<string> numbers_alphabet;

class Solution
{
public:

vector<string> DFS(int index, vector<string> result)
{
string temp = numbers_alphabet[index];
vector<string> tempRes;

for(unsigned int i=0; i< temp.length(); ++i)
{
for(size_t n=0;n< result.size(); ++n)
{
string newStr = " ";
newStr = result
+ temp[i];

tempRes.push_back(newStr);
}
}
result.clear();
result = tempRes;
tempRes.clear();
return result;
}

vector<string> letterCombinations(string digits)
{

numbers_alphabet.push_back("");
numbers_alphabet.push_back("");
numbers_alphabet.push_back("abc");
numbers_alphabet.push_back("def");
numbers_alphabet.push_back("ghi");
numbers_alphabet.push_back("jkl");
numbers_alphabet.push_back("mno");
numbers_alphabet.push_back("pqrs");
numbers_alphabet.push_back("tuv");
numbers_alphabet.push_back("wxyz");

vector<string> result;
if(digits.empty()){
return result;
}

string initRes = numbers_alphabet[(int)(digits[0]-'0')];

for(unsigned int i = 0; i<initRes.length(); ++i)
{
string t = "";
result.push_back(t+initRes[i]);
}

for(unsigned int j=1; j<digits.length(); ++j)
{
result = DFS((int)(digits[j]-'0'),result);
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: