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.
解题思路:
这道题,大概就是将string转为int,然后找到对应的字符串进行添加就好了。
大概就是一个组合的东西,我也没想到什么简要的办法,所以就不断循环添加。
[java] view plain copy print ? public class Solution { public List<String> letterCombinations(String digits) { String[] ans = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; List<String> result = new ArrayList<String>(); if(digits == "" || digits.length() == 0) return result; result.add(""); int[] num = new int[digits.length()]; for(int i = 0;i<digits.length();i++) { num[i] = digits.charAt(i)-'0'; } for(int k = 0;k<digits.length();k++) { if(num[k]<2) continue; List<String> midans = new ArrayList<String>(); String s1 = ans[num[k]]; for(int i = 0;i<result.size();i++) { for(int j = 0;j<s1.length();j++) { midans.add(result.get(i)+s1.charAt(j)); } } result = midans; } return result; } } public class Solution { public List<String> letterCombinations(String digits) { String[] ans = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; List<String> result = new ArrayList<String>(); if(digits == "" || digits.length() == 0) return result; result.add(""); int[] num = new int[digits.length()]; for(int i = 0;i<digits.length();i++) { num[i] = digits.charAt(i)-'0'; } for(int k = 0;k<digits.length();k++) { if(num[k]<2) continue; List<String> midans = new ArrayList<String>(); String s1 = ans[num[k]]; for(int i = 0;i<result.size();i++) { for(int j = 0;j<s1.length();j++) { midans.add(result.get(i)+s1.charAt(j)); } } result = midans; } return result; } }
