leetcode 17 Letter Combinations of a Phone Number

題目詳情

Given a digit string, return all possible letter combinations that the number could represent.
mapping of digit to letters (just like on the telephone buttons) is given below.
200px-Telephone-keypad2.png

這道題要求咱們給出,對於輸入的按鍵組合,咱們須要返回按鍵所對應的全部可能的字符串。而按鍵和字母的對應關係如上圖。git

想法

  • 這道題就是一種排列組合,對於一種按鍵組合咱們要按照輸入順序排列組合出全部的字符串。
  • 每一次按鍵咱們都會獲得一系列字符串,如"2"獲得"a","b","c"。這將成爲下一次操做的前序字符串。
  • 咱們將字符串存儲在linkedlist裏面,經過peek操做依次取出前序字符串。對於每個不一樣的前序字符串,咱們都要在其後面分別加上當前鍵所表示的不一樣字符,再將得到的結果字符串加入linkedlist裏面。

解法

public List<String> letterCombinations(String digits) {
        LinkedList<String> res = new LinkedList<String>(); 
        if(digits.length() == 0){
            return res;
        }
        String[] mapping = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};       
        res.add("");
        
        for(int i=0;i<digits.length();i++){
            int index = Character.getNumericValue(digits.charAt(i));
            while(res.peek().length() == i){
                String temp = res.remove();
                for(char c : mapping[index].toCharArray()){
                    res.add(temp+c);
                }
            }
            
        }      
        
        return res;
    }
相關文章
相關標籤/搜索