0017. Letter Combinations of a Phone Number
https://leetcode.com/problems/letter-combinations-of-a-phone-number
Description
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']
.
ac
class Solution {
public List<String> letterCombinations(String digits) {
List<String> res = new ArrayList<String>();
// edge case
if (digits == null || digits.length() == 0) return res;
String[] buttons = new String[]{"", "", "abc","def", "ghi", "jkl","mno", "pqrs", "tuv","wxyz"};
Queue<String> q = new LinkedList<>();
q.offer("");
for (int i = 0; i < digits.length(); i++) {
char c = digits.charAt(i);
if (c == '0' || c == '1') continue;
String letters = buttons[c-'0'];
int len = q.size();
for (int j = 0; j < len; j++) {
String h = q.poll();
for (char chr : letters.toCharArray()) {
q.offer(h+chr);
}
}
}
res.addAll(q);
return res;
}
}
Last updated
Was this helpful?