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:
0 <= digits.length <= 4digits[i] is a digit in the range ['2', '9'].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;
  }
}