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; } };