Letter Combinations of a Phone Number
主要思路如下:
1. 首先构建容器vector,按键数为索引,对应的字符串为值
vector<string> letter {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
2. 三层循环
(1)输入digits,如"23",从 letter 中取出对应的字符串 dig,如dig[0] = letter[2] = "abc"
(2) 字符串 dig,把字符以字符串类型存入 result 中,result = {"a", "b", "c"}
(3)result,将其中字符串与新遍历的dig组合成新的字符串并存入 result 中,
如 result 中的 "a","b", "c" 与 dig[1] = letter[3]="def"中的"d", "e", "f"
组合成"ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf" 存入 result中。
整体代码如下:
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> letter {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
vector<string> result;
if (digits.empty())
{
return result;
}
result.push_back("");
for (int i = 0; i < digits.size(); i++)
{
string dig = letter[digits[i] - '0'];
vector<string> tmp;
for (int j = 0; j < dig.size(); j++)
{
for (int k = 0; k < result.size(); k++)
{
tmp.push_back(result[k] + dig[j]);
}
}
result = tmp;
}
return result;
}
};
知识点漏洞:
(1) string类型,通过索引取出的值为char类型,不可直接相加
(2) string类型 + char类型 = string 类型
(3) 通过运算符,如+、-,可以使char类型转换为int类型
(4) vector空容器和vector {""},不一样