Написано: 26.02.2023

17. Letter Combinations of a Phone Number

medium

Задание.

Получена строка, содержащая цифры от 2-9 включительно.

Нужно вернуть все возможные комбинации букв, которые могло бы представлять число. Ответ можно вернуть в любом порядке.

Преобразование цифр в буквы (точно так же, как на кнопках телефона) приведено ниже. Обратите внимание, что 1 не сопоставляется ни с какими буквами.

LeetCode-000017

Пример 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) {
        if(digits.empty()){
            return {};
        }
        vector<string> pad = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        vector<string> output;
        output.push_back("");
        for(auto key : digits){
            vector<string> temp;
            for(auto candidate : pad[key-'0']){
                for(auto c : output){
                    temp.push_back(c + candidate);
                }
            }
            output.clear();
            output = temp;
        }
        return output;
    }
};