电话号码的字母组合
in Algorithm Pageviews
给定一个仅仅包含数字 2-9
的字符串,返回所有它能表示的字母组合,答案可以按照任意顺序返回。
数字到字母的映射关系如下(与按键式老式手机相同)。
注意:1 不对应任何字母。
示例1
输入
digits = "23"
输出
["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例2
输入
digits = ""
输出
[]
示例3
输入
digits = "2"
输出
["a","b","c"]
代码实现如下:
class Solution {
public:
vector<string> LetterCombinations(string digits)
{
vector<string> str = {"", "", "abc", "def", "ghi", "mno", "pqrs", "tuv", "wxyz"};
if (digits.empty()) {
return vector<string>();
}
vector<string> state{""};
for (const auto &u : digits) {
vector<string> nowState;
for (const auto &c : str[u - '0']) {
for (const auto &str : state) {
nowState.emplace_back(str + c);
}
}
state = nowState;
}
return state;
}
};