#leetcode#Letter Combinations of a Phone Number

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"].

经典题目, iterative和recursive都要会写

iterative的是之前看的code ganker大神的解法,其实自己想也想得出来吧, 脑子太懒了

recursive的自己写了一下, 思路对了, 没能bug free

public class Solution {public List<String> letterCombinations(String digits) {List<String> res = new ArrayList<String>();if(digits == null || digits.length() == 0)return res;Map<Character, String> map = new HashMap<Character, String>();map.put('2', "abc");map.put('3', "def");map.put('4', "ghi");map.put('5', "jkl");map.put('6', "mno");map.put('7', "pqrs");map.put('8', "tuv");map.put('9', "wxyz");StringBuilder sb = new StringBuilder();helper(res, digits, map, sb, 0);return res;}private void helper(List<String> res, String digits, Map<Character, String> map, StringBuilder sb, int index){if(sb.length() == digits.length()){res.add(sb.toString());return;}String letters = map.get(digits.charAt(index));for(int i = 0; i < letters.length(); i++){sb.append(letters.charAt(i));helper(res, digits, map, sb, index + 1);sb.deleteCharAt(sb.length() – 1);}}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

,有希望在的地方,痛苦也成欢乐

#leetcode#Letter Combinations of a Phone Number

相关文章:

你感兴趣的文章:

标签云: