您的位置:首页 > 其它

Letter Combinations of a Phone Number

2014-04-13 16:37 274 查看
class Solution {
public:
vector<string> letterCombinations(string digits) {
//递归 笛卡尔积
vector<string> ret;
string keyboard[]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
if(digits.empty())
{
ret.push_back("");
return ret;
}
if(digits.length()==1)
{
for(size_t i=0;i<keyboard[atoi(digits.c_str())].length();i++)
{
string tmp;
tmp.push_back(keyboard[atoi(digits.c_str())][i]);
ret.push_back(tmp);
}
return ret;
}
else
{
string head=keyboard[digits[0]-'0'];
digits.erase(digits.begin(),digits.begin()+1);
vector<string> other=letterCombinations(digits);
for(size_t i=0;i<head.length();i++)
{
string tmp;
tmp.push_back(head[i]);
for(size_t j=0;j<other.size();j++)
{
ret.push_back(tmp+other[j]);
}
}
return ret;
}
}
};
class Solution {
public:
vector<string> letterCombinations(string digits) {
//迭代 笛卡尔积
vector<string> ret;
vector<string> pre;
ret.push_back("");
pre=ret;
ret.clear();
string keyboard[]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
for(size_t i=0;i<digits.length();i++)
{
for(size_t j=0;j<pre.size();j++)
{
for(size_t k=0;k<keyboard[digits[i]-'0'].length();k++)
{
string tmp;
tmp.push_back(keyboard[digits[i]-'0'][k]);
ret.push_back(pre[j]+tmp);
}
}
pre=ret;
ret.clear();
}
return pre;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  穷举