• LeetCode


    Letter Combinations of a Phone Number

    2013.12.6 19:52

    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.

    Solution:

      Given a certain digit string and the corresponding mapping between digits [0-9] and letters [a-z],  return all the possible letter combinatios that map to this digit string. Since all the combinations must be enumerated, using DFS is efficient in coding. A mapping array between  digits and letters is needed.

      Code segment is quite short and need no more explanation.

      Time complexity is BIG_PI(i in range(0, len(digit_str))){number of mapping for digit_str[i]}, space complexity is O(len(digit_str)).

    Accepted code:

     1 // 7CE, 2RE, 1WA, 1AC, too bad~
     2 #include <string>
     3 using namespace std;
     4 
     5 class Solution {
     6 public:
     7     vector<string> letterCombinations(string digits) {
     8         // IMPORTANT: Please reset any member data you declared, as
     9         // the same Solution instance will be reused for each test case.
    10         result.clear();
    11         
    12         dfs(digits, 0, "");
    13         
    14         return result;
    15     }
    16 private:
    17     vector<string> result;
    18     string dict[10] = {
    19         " ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"
    20     };
    21     
    22     void dfs(string &digits, int idx, string str) {
    23         if(idx == digits.length()){
    24             result.push_back(str);
    25             // 1RE here, didn't return
    26             return;
    27         }
    28         
    29         // 7CE here, dict[digits[idx] - '0'], type mismatch
    30         for(int i = 0; i < dict[digits[idx] - '0'].length(); ++i){
    31             // 1RE here, 1WA here, wrong index
    32             dfs(digits, idx + 1, str + dict[digits[idx] - '0'][i]);
    33         }
    34     }
    35 };
  • 相关阅读:
    系统机制 。。(p118p128)
    POJ3371Flesch Reading Ease
    POJ2187Beauty Contest
    POJ3096Surprising Strings
    POJ3393Lucky and Good Months by Gregorian Calendar
    POJ3007Organize Your Train part II
    POJ1027The Same Game
    POJ1696Space Ant
    POJ1584A Round Peg in a Ground Hole
    POJ1472Instant Complexity
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/3462044.html
Copyright © 2020-2023  润新知