LeetCode 17. Letter Combinations of a Phone Number

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example 1:

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]

Example 2:

Input: digits = ""
Output: []

Example 3:

Input: digits = "2"
Output: ["a","b","c"]

Constraints:

  • 0 <= digits.length <= 4

  • digits[i] is a digit in the range ['2', '9'].

Solution:

English Version in Youtube

中文版解答Youtube Link

中文版解答Bilibili Link

class Solution {
    
public:
    vector<string> letterCombinations(string digits) {
        string symbols[10] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        vector<string> result;
        if (digits.empty()) {
            return result;
        }
        result.push_back("");
        
        for (char ch : digits) {
            int num = ch - '0';
            vector<string> new_result;
            for (const string& s : result) {
                for (char symbol : symbols[num]) {
                    string tmp = s + symbol;
                    new_result.push_back(tmp);
                }
            }
            result.swap(new_result);
        }
        
        return result;
    }
    
};

Last updated

Was this helpful?