import java.util.*; public class Solution { ArrayList<String> res = new ArrayList(); String[] mapping = new String[]{ "","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ" }; public ArrayList<String> phoneNumber (String num) { backtrack(num,0,new StringBuilder()); return res; } private void backtrack(String num,int start,StringBuilder sb){ if(sb.length() == num.length()){ res.add(sb.toString()); return; } char dight = num.charAt(start); for(char c:mapping[dight-'0'].toCharArray()){ sb.append(c); backtrack(num,start+1,sb); sb.deleteCharAt(sb.length()-1); } } }