import java.util.ArrayList;
import java.util.List;
public class Leetcode_0017_LetterCombinationsOfAPhoneNumber {
public static char[][] phone = {
{'a', 'b', 'c'},
{'d', 'e', 'f'},
{'g', 'h', 'i'},
{'j', 'k', 'l'},
{'m', 'n', 'o'},
{'p', 'q', 'r', 's'},
{'t', 'u', 'v'},
{'w', 'x', 'y', 'z'},
};
public static List<String> letterCombinations(String digits) {
if (digits == null || digits.length() <= 0) {
return new ArrayList<>();
}
char[] str = digits.toCharArray();
char[] path = new char[digits.length()];
List<String> ans = new ArrayList<>();
process(str, path, 0, ans);
return ans;
}
private static void process(char[] str, char[] path, int index, List<String> ans) {
if (index == str.length) {
ans.add(String.valueOf(path));
} else {
char[] canditate = phone[str[index] - '2'];
for (int i = 0; i < canditate.length; i++) {
path[index] = canditate[i];
process(str, path, index + 1, ans);
}
}
}
public static void main(String[] args) {
System.out.println(letterCombinations("23"));
}
}