【leetcode】【17】Letter Combinations of a Phone Number

来源:互联网 发布:织梦 文章分页 index 编辑:程序博客网 时间:2024/06/03 08:43

一、问题描述

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

二、问题分析

典型的回溯法问题。采用回溯的通用解决方式,只不过需要注意的是将digits映射到字符串上,所以可以使用字符串数组,数组的索引与数字恰好有对应关系。

三、Java AC 代码

public List<String> letterCombinations(String digits) {        List<String> list = new ArrayList<String>();        if(digits==null || digits.length()==0){            return list;        }        String[] nums = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};        dfsHelper(list,new String(), 0, digits, nums);        return list;    }    public void dfsHelper(List<String> list, String item, int start, String digits, String[] nums){        if(item.length()==digits.length()){            list.add(item);            return ;        }        int num = digits.charAt(start) - '0';        String tmp = nums[num-2];        for(int j = 0; j< tmp.length(); j++){            dfsHelper(list, item+tmp.charAt(j), start+1, digits, nums);        }    }


0 0
原创粉丝点击