Letter Combinations of a Phone Number
//输入2~9构成的数字串,输出可能表示的字符串
//对应:0,1无对应字符,2-(abc) 3-(def) 4-(ghi) 5-(jkl) 6-(mno) 7-(pqrs) 8-(tuv) 9-(wxyz)
//找到的这个参考方法是c++语言的
//p.s. c++的vector类自带"push_back()"函数用于在vector尾部插入数据;string类也有push_back()用于在字符串后插入一个字符
class Solution {
public:
vector<string> letterCombinations(string digits)
{
vector<string> res;
string charmap[10] = {"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; //字符map
res.push_back(""); //初始大小为1(服务于下面的循环条件)
if(digits.empty()) //对付输入是空的testcase
{
vector<string> null;
return null;
}
for(int i = 0; i < digits.size(); i++)
{
vector<string> temp;
string chars = charmap[digits[i]-'0']; //数字对应的字符串 -'0'是减去0的ASCII码值,即将char的数字变为int
for(int c = 0; c < chars.size(); c++) //遍历数字对应字符
for(int j = 0; j < res.size(); j++) //遍历已有字符串
temp.push_back(res[j] + chars[c]); //输出已有字符串和新增字符的排列组合
res = temp; //准备进入下一个循环
}
return res;
}
};
总是在解决题目或者是参考他人解答方法的过程中学到有用的小知识,很开心!