电话号码的字母组合

leetcode!

给定一个仅仅包含数字 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;
    }
};