首页 > 代码库 > leetcode Letter Combinations of a Phone Number

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

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

 

解法是递推,下一次的list就是当前list的string加上当前数字代表的字母。

 1 public class Solution { 2     List<String> lastList=new ArrayList<>(); 3     String[] N2=new String[]{"a","b","c"}; 4     String[] N3=new String[]{"d","e","f"}; 5     String[] N4=new String[]{"g","h","i"}; 6     String[] N5=new String[]{"j","k","l"}; 7     String[] N6=new String[]{"m","n","o"}; 8     String[] N7=new String[]{"p","q","r","s"}; 9     String[] N8=new String[]{"t","u","v"};10     String[] N9=new String[]{"w","x","y","z"};11     12     public List<String> letterCombinations(String digits) {13         String[] num = null;14         if (digits.equals("")) {15             lastList.add("");16             return lastList;17         }18         for (int i = 0; i < digits.length(); i++) {19             20             switch (digits.charAt(i)) {21             case ‘2‘:22                 num=N2;23                 break;24             case ‘3‘:25                 num=N3;26                 break;27             case ‘4‘:28                 num=N4;29                 break;30             case ‘5‘:31                 num=N5;32                 break;33             case ‘6‘:34                 num=N6;35                 break;36             case ‘7‘:37                 num=N7;38                 break;39             case ‘8‘:40                 num=N8;41                 break;42             case ‘9‘:43                 num=N9;44                 break;45 46             }47             if (i==0) {48                 lastList.addAll(Arrays.asList(num));49                 continue;50             }51             List<String> nextList=new ArrayList<>();52             for (String string : lastList) {53                 for (String ss : num) {54                     nextList.add(string+ss);55                 }56             }57             lastList=nextList;58         }59         return lastList;60     }61    62 }

 

leetcode Letter Combinations of a Phone Number