西小瓜: 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"].
Although the above answer is in lexicographical order, your answer could be in any order you want.
public ArrayList<String> letterCombinations(String digits) {
ArrayList<String> results=new ArrayList<String>();
StringBuilder re=new StringBuilder();
String[] board=new String[10];
board[0]=" ";board[1]="1";board[2]="abc";
board[3]="def";board[4]="ghi";board[5]="jkl";
board[6]="mno";board[7]="pqrs";board[8]="tuv";board[9]="wxyz";
helper(results,re,digits,board,0);
return results;
}
public void helper(ArrayList<String> results, StringBuilder re, String digits, String[] board, int step){
if(step==digits.length()){
results.add(re.toString());
return;
}
String s=board[digits.charAt(step)-'0'];
//or
//int num=digits.charAt(step);
//String s=board[num];
for(int i=0;i<s.length();i++){
re.append(s.charAt(i));
helper(results,re,digits,board,step+1);
re.deleteCharAt(step);
}
}
Read full article from 西小瓜: Leetcode: Letter Combinations of a Phone Number

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts