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 <= 4
digits[i]
is a digit in the range ['2', '9']
.using System.Text;
public class Solution {
public IList<string> LetterCombinations(string digits) {
if (string.IsNullOrEmpty(digits)) {
return new List<string>();
}
string[] letters = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
IList<string> ans = new List<string>();
StringBuilder sb = new StringBuilder();
FindCombinations(0, digits, letters, sb, ans);
return ans;
}
private void FindCombinations(
int start, string nums, string[] letters, StringBuilder curr, IList<string> ans) {
if (curr.Length == nums.Length) {
ans.Add(curr.ToString());
return;
}
for (int i = start; i < nums.Length; i++) {
int n = int.Parse(nums[i].ToString());
for (int j = 0; j < letters[n].Length; j++) {
char ch = letters[n][j];
curr.Append(ch);
FindCombinations(i + 1, nums, letters, curr, ans);
curr.Length--; // Equivalent to deleting the last character in StringBuilder
}
}
}
}