LeetCode-in-Dart

17. Letter Combinations of a Phone Number

Medium

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:

Solution

class Solution {
  List<String> letterCombinations(String digits) {
    if (digits.isEmpty) {
      return [];
    }
    final Map<String, String> hashmap = {
      '2': 'abc',
      '3': 'def',
      '4': 'ghi',
      '5': 'jkl',
      '6': 'mno',
      '7': 'pqrs',
      '8': 'tuv',
      '9': 'wxyz',
    };
    List<String> ans = [];
    void backTracking(String digit, int index, List<String> ans) {
      if (digit.length == digits.length) {
        ans.add(digit);
        return;
      }
      for (String character in hashmap[digits[index]]!.split('')) {
        backTracking(digit + character, index + 1, ans);
      }
    }
    backTracking('', 0, ans);
    return ans;
  }
}