题意:
给一个数字字符串。根据手机按键,给出所有可能的对应字符组合。
分析:
1 用一个map或者数组之类的索引容器将查找信息存储起来
2 递归深搜
3 每一层是字符串对应数字对应的字符,可以取出当前层遍历数组
4 所以需要一个参数index代表哪一层(哪一个字符去展开)
基本差不多可以写代码了:
public class Solution { private String[] map = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" }; public List<String> letterCombinations(String digits) { List<String> list = new ArrayList<String>(); if(digits.length()==0) return list; helper("", digits, 0, list); return list; } private void helper(String s, String digits, int index, List<String> list) { if (index == digits.length()) { list.add(s); return; } String layer = map[(digits.charAt(index) - '0')]; //数字字符转化为数字 for (int i = 0; i < layer.length(); i++) { helper(s + layer.charAt(i), digits, index + 1, list); } } }