实现九宫格字符串的输入
比如
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
接下里实现代码
代码:
char *lettersmap[] = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
class TyKeyboard
{
//将来要返回的所有字符组合
vector<string> res;
public:
void findCombinStr(string strdigits, int nindex, string lastRes)
{
if (nindex == strdigits.size())
{
res.push_back(lastRes);
return;
}
char c = strdigits.at(nindex);
string letters = lettersmap[c - '0'];
for (int i = 0; i < letters.size();i++)
{
findCombinStr(strdigits, nindex + 1, lastRes + letters.at(i));
}
}
vector<string> GetCombinationStrsByDigits(string strdigits)
{
res.clear();
for (int i = 0; i < strdigits.size();i++)
{
if (strdigits.at(i) > '9'&&strdigits.at(i) < ='1')
{
return res;
}
}
findCombinStr(strdigits,0,"");
return res;
}
};
int main()
{
TyKeyboard s;
vector<string> vc = s.GetCombinationStrsByDigits("8264");
for (auto node : vc)
{
cout << node.c_str() << " ";
}
cout << endl;
system("pause");
return 0;
}
结果:
本例我是用来输出tang的,从下面运行结果可以看出,找到了tang(橘黄色)