Seawolf 发表于 2019-8-18 04:39:53

leetcode 17. Letter Combinations of a Phone Number 谷歌面试题

Given a string containing digits from 2-9 inclusive, 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. Note that 1 does not map to any letters.


Example:

Input: "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.



class Solution {
    public static List<String> letterCombinations(String digits) {
      
      List<String> fi= new ArrayList<String>();
      
      if(digits == null || digits.length() == 0){
            
            return fi;
      }
      
      generateString(digits, fi , "");
      
      return fi;
      
    }
   
    public static void generateString(String digits, List<String> fi,String result){
           
            if(digits.length() == 0) {
                   
                    fi.add(result);
                   
                    return;
            }
      
            String head = get_head(digits);
           
            String a = "";
           
           
            switch (head) {
      case "2":
            a = "abc";
            break;
      case "3":
            a = "def";
            break;
      case "4":
            a = "ghi";
            break;
      case "5":
            a = "jkl";
            break;
      case "6":
            a = "mno";
            break;
      case "7":
            a = "pqrs";
            break;
      case "8":
            a = "tuv";
            break;
      case "9":
            a = "wxyz";
            break;
      default:
            a = "";
            break;
      }
           
            for(int i = 0; i < a.length(); i++) {
                   
                    result = result + a.substring(i,i+1);
                   
                    generateString(digits.substring(1,digits.length()),fi,result);
                   
                    result = result.substring(0,result.length()-1);
                   
            }
      
    }
   
    public static String get_head(String digits){
      
      if(digits == null || digits == ""){
            
            return null;
      }
      
      return digits.substring(0,1);
    }
}

页: [1]
查看完整版本: leetcode 17. Letter Combinations of a Phone Number 谷歌面试题