leetcode_middle_82_17. Letter Combinations of a Phone Number

题意:

给一个数字字符串。根据手机按键,给出所有可能的对应字符组合。


分析:

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);
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值