import java.util.*;
/**
* NC329 电话号码的字母组合
* @author d3y1
*/
public class Solution {
private HashMap<Character, String> numLettersMap = new HashMap<Character, 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");
}};
private int LEN;
private ArrayList<String> result = new ArrayList<>();
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 程序入口
*
* @param num string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> phoneNumber (String num) {
LEN = num.length();
dfs(num, 0, "");
return result;
}
/**
* dfs
* @param num
* @param depth
* @param word
*/
private void dfs(String num, int depth, String word){
if(depth == LEN){
result.add(word.toLowerCase());
return;
}
for(char ch: numLettersMap.get(num.charAt(depth)).toCharArray()){
dfs(num, depth+1, word+ch);
}
}
}