4.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"]

Solution : (Backtracking)

class Solution
{
public:
    void combine(vector<string> &res, string a, string b)
    {

        string k = a;

        for (int i = 0; i < b.size(); i++)
        {
            res.push_back(k + b[i]);
        }
        return;
    }

    vector<string> letterCombinations(string digits)
    {

        vector<string> s{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};

        vector<string> res;

        if (digits.length() == 0)
        {
            return res;
        }

        string a = s[digits[0] - 48];
        string k = "";
        for (int i = 0; i < a.length(); i++)
        {
            k = k + a[i];
            res.push_back(k);
            k = "";
        }

        for (int i = 1; i < digits.length(); i++)
        {
            vector<string> v;
            for (int j = 0; j < res.size(); j++)
            {
                combine(v, res[j], s[digits[i] - 48]);
            }

            res.clear();
            res = v;
        }

        return res;
    }
};

Last updated