class Solution {
private List<String> results = new ArrayList<String>();
private Map<String, String> phones = new HashMap<String, String>()
{
{
put("2", "abc");
put("3", "def");
put("4", "ghi");
put("5", "jkl");
put("6", "mno");
put("7", "pqrs");
put("8", "tuv");
put("9", "wxyz");
}
};
public List<String> letterCombinations(String digits) {
if(digits.length() != 0)
{
dfs("", digits);
}
return results;
}
public void dfs(String result, String nextDigit)
{
if(nextDigit.length() == 0)
{
this.results.add(result);
return;
}
String digit = nextDigit.substring(0, 1);
String letters = this.phones.get(digit);
for(int i = 0; i < letters.length(); i++)
{
String letter = letters.substring(i, i + 1);
dfs(result + letter, nextDigit.substring(1));
}
}
}