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)
{
int length=digits.length();
vector<string> v;
int digit[length+1];
for(int i=0; i<length; i++)
{
digit[i]=digits[i]-'0';
if(i==0)
{
if(digit[i]==2)
{
{
v.push_back("a");
v.push_back("b");
v.push_back("c");
////v.erase(v.begin());
}
}
if(digit[i]==3)
{
{
v.push_back("d");
v.push_back("e");
v.push_back("f");
}
}
if(digit[i]==4)
{
{
v.push_back("g");
v.push_back("h");
v.push_back("i");
////v.erase(v.begin());
}
}
if(digit[i]==5)
{
{
v.push_back("j");
v.push_back("k");
v.push_back("l");
////v.erase(v.begin());
}
}
if(digit[i]==6)
{
{
v.push_back("m");
v.push_back("n");
v.push_back("o");
////v.erase(v.begin());
}
}
if(digit[i]==7)
{
{
v.push_back("p");
v.push_back("q");
v.push_back("r");
v.push_back("s");
//.erase(v.begin()+j);
}
}
if(digit[i]==8)
{
{
v.push_back("t");
v.push_back("u");
v.push_back("v");
////v.erase(v.begin());
}
}
if(digit[i]==9)
{
{
v.push_back("w");
v.push_back("x");
v.push_back("y");
v.push_back("z");
// //v.erase(v.begin());
}
}
continue;
}
if(digit[i]==2)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"a");
v.push_back(v[j]+"b");
v.push_back(v[j]+"c");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==3)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"d");
v.push_back(v[j]+"e");
v.push_back(v[j]+"f");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==4)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"g");
v.push_back(v[j]+"h");
v.push_back(v[j]+"i");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==5)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"j");
v.push_back(v[j]+"k");
v.push_back(v[j]+"l");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==6)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"m");
v.push_back(v[j]+"n");
v.push_back(v[j]+"o");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==7)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"p");
v.push_back(v[j]+"q");
v.push_back(v[j]+"r");
v.push_back(v[j]+"s");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==8)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"t");
v.push_back(v[j]+"u");
v.push_back(v[j]+"v");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
if(digit[i]==9)
{
int size=v.size();
for(int j=0; j<size; j++)
{
v.push_back(v[j]+"w");
v.push_back(v[j]+"x");
v.push_back(v[j]+"y");
v.push_back(v[j]+"z");
//v.erase(v.begin());
}
for(int j=0;j<size;j++){
v.erase(v.begin());
}
}
}
return v;
}
};