九键输入法中 2~9 每个数字对应了若干个的字母,请找出给定数字组合对应的全部字母组合。
1.该题你返回的组合顺序可以不唯一
2.该题你返回的字母大小写都是可以的
数据范围:数字长度 ,数字中保证不出现 和
键盘数字对应的映射如下:
"55"
["JJ","JK","JL","KJ","KK","KL","LJ","LK","LL"]
"3"
["D","E","F"]
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num string字符串 * @return string字符串ArrayList */ private static final String[] seq = new String[]{ "", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"}; public ArrayList<String> phoneNumber (String num) { ArrayList<String> res = new ArrayList<>(); StringBuilder track = new StringBuilder(); int depth = num.length(); backtrack(track,res,0,depth,num); return res; } private void backtrack(StringBuilder track,ArrayList<String>res,int currDepth,int maxDepth,String num) { if (currDepth>=maxDepth) { res.add(track.toString()); return; } int index = (int) num.charAt(currDepth) - '0'; String currSeq = seq[index]; for (int i = 0; i < currSeq.length(); i++) { track.append(currSeq.charAt(i)); backtrack(track,res,currDepth+1,maxDepth,num); track.deleteCharAt(track.length()-1); } } }