Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
import java.util.ArrayList;
public class Solution {
public ArrayList<String> letterCombinations(String digits) {
ArrayList<String> result = new ArrayList<String>();
if(digits == null || digits.length() == 0) return result;
String[] dict = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
helper(digits, result, dict, 0, new StringBuffer());
return result;
}
private void helper(String digits, ArrayList<String> result, String[] dict, int number, StringBuffer sb){
if(number == digits.length()){
result.add(sb.toString());
return;
}
String current = dict[digits.charAt(number) - '0'];
for(int i = 0; i < current.length(); i++){
sb.append(current.charAt(i));
helper(digits, result, dict, number + 1, sb);
sb.deleteCharAt(sb.length() - 1);
}
}
}