zoukankan      html  css  js  c++  java
  • LeetCode: "Letter Combinations of a Phone Number

    一些小问题, “”的输出我的是[], 但是答案却是[""], 比较难理解,3次过

     1 class Solution {
     2 public:
     3     void dfs(vector<string> &ret, string tmp, map<char, string> refer, string digits, int beg) {
     4         if (beg >= digits.size()) {
     5             ret.push_back(tmp);
     6             return;
     7         }
     8         if (digits[beg] <= '9' && digits[beg] >= '2') {
     9             for (int i = 0; i < refer[digits[beg]].size(); i++) {
    10                 string r = refer[digits[beg]];
    11                 dfs(ret, tmp+r[i], refer, digits, beg+1);
    12             }
    13         }
    14     }
    15     vector<string> letterCombinations(string digits) {
    16         // Start typing your C/C++ solution below
    17         // DO NOT write int main() function
    18         map<char, string> refer;
    19         refer['2'] = "abc";
    20         refer['3'] = "def";
    21         refer['4'] = "ghi";
    22         refer['5'] = "jkl";
    23         refer['6'] = "mno";
    24         refer['7'] = "pqrs";
    25         refer['8'] = "tuv";
    26         refer['9'] = "wxyz";
    27         vector<string> ret;
    28         string tmp = "";
    29         dfs(ret, tmp, refer, digits, 0);
    30         return ret;
    31     }
    32 };

     加一个iterative的方法

     1 class Solution {
     2 public:
     3     vector<string> letterCombinations(string digits) {
     4         // IMPORTANT: Please reset any member data you declared, as
     5         // the same Solution instance will be reused for each test case.
     6         map<char, string> S;
     7         S['2'] = "abc", S['3'] = "def", S['4'] = "ghi", S['5'] = "jkl";
     8         S['6'] = "mno", S['7'] = "pqrs", S['8'] = "tuv", S['9'] = "wxyz";
     9         queue<string> que;
    10         vector<string> res;
    11         if (digits.size() == 0) {
    12             res.push_back("");
    13             return res;
    14         }
    15         for (int i = 0; i < S[digits[0]].size(); i++) que.push(string("")+S[digits[0]][i]);
    16         while (!que.empty()) {
    17             string tmp = que.front();
    18             que.pop();
    19             if (tmp.size() == digits.size()) res.push_back(tmp);
    20             else for (int i = 0; i < S[digits[tmp.size()]].size(); i++) que.push(tmp+S[digits[tmp.size()]][i]);
    21         }
    22         return res;
    23     }
    24 };

     C#

     1 public class Solution {
     2     public List<string> LetterCombinations(string digits) {
     3         Dictionary<char, string> S = new Dictionary<char, string>();
     4         S.Add('2', "abc"); S.Add('3', "def"); S.Add('4', "ghi"); S.Add('5', "jkl");
     5         S.Add('6', "mno"); S.Add('7', "pqrs"); S.Add('8', "tuv"); S.Add('9', "wxyz");
     6         Queue<string> que = new Queue<string>();
     7         List<string> ans = new List<string>();
     8         if (digits.Length == 0) return ans;
     9         foreach (var s in S[digits[0]]) que.Enqueue("" + (char)s);
    10         while (que.Count != 0) {
    11             string peek = que.Peek();
    12             que.Dequeue();
    13             if (peek.Length == digits.Length) ans.Add(peek);
    14             else foreach(var s in S[digits[peek.Length]]) que.Enqueue(peek + (char)s);
    15         }
    16         return ans;
    17     }
    18 }
    View Code
  • 相关阅读:
    golang中os/user包用法
    golang中os包用法
    与table有关的布局
    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version
    canvas里调用getImageData的报security的问题
    CSS样式覆盖规则
    windows7文件夹怎样默认图片大图显示?
    Jboss,Tomcat 远程调试配置
    IE(IE6/IE7/IE8)支持HTML5标签
    JS 继承(类式 与 原型式)
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/2995633.html
Copyright © 2011-2022 走看看