LeetCode OJ-17.Letter Combinations of a Phone Number(DFS)

原创 2017年01月03日 14:29:32

LeetCode OJ-17.Letter Combinations of a Phone Number(DFS解法)

题目描述

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.

img

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.

题目理解

​ 电话上的数字按键,从2-9每一个都有其相应的一组英文字母,题目要求从给定的输入数字串中,求解所有可能得到的字母组合情况。每一种字母组合情况的长度都与给定数字串长度相等,因此该条件则可以作为递归的结束条件,可以直接使用DFS解决,这里不会超时。思路类似全排列的求解,具体代码如下:

Code

void dfs(const string &digits, string &tmp, map<char, string> &keys,
         vector<string> &res)
{
    int cur_len = (int) tmp.length();  //已搜索到的其中一种组合方式的长度
    if (cur_len == digits.length()) {  //该长度等于digits的长度,说明该组合下的搜索完成
        res.push_back(tmp);
        return ;
    }
    else {
        int i;
        int len = (int) keys[digits[cur_len]].length();
        for (i = 0; i < len; ++i) {
            tmp.push_back(keys[digits[cur_len]][i]);
            dfs(digits, tmp, keys, res);
            tmp.pop_back();  //回溯的过程
        }
    }
}

vector<string> letter_combinations(const string &digits)
{
    vector<string> res;
    if (digits.length() < 1) {  //没有按下任何数字键
        return res;
    }

    string tmp("");
    map<char, string> keys;  //map用于记录2-9的数字按键上对应的英文字母
    keys['2'] = string("abc");
    keys['3'] = string("def");
    keys['4'] = string("ghi");
    keys['5'] = string("jkl");
    keys['6'] = string("mno");
    keys['7'] = string("pqrs");
    keys['8'] = string("tuv");
    keys['9'] = string("wxyz");

    dfs(digits, tmp, keys, res);

    return res;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCodet题解--17. Letter Combinations of a Phone Number(所有数字键盘组合所对应的所有字符集合)

链接 LeetCode题目:https://leetcode.com/problems/letter-combinations-of-a-phone-number/ GitHub代码:h...
  • gatieme
  • gatieme
  • 2016年04月07日 16:53
  • 1547

【LeetCode-面试算法经典-Java实现】【017-Letter Combinations of a Phone Number (电话号码上的单词组合)】

【017-Letter Combinations of a Phone Number (电话号码上的单词组合)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given ...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月21日 07:27
  • 2162

leetcode 204题求素数个数

Description: Count the number of prime numbers less than a non-negative number, n   提示晒数法: http://e...
  • wangyaninglm
  • wangyaninglm
  • 2015年04月28日 22:20
  • 2129

LeetCode OJ-17-Letter Combinations of a Phone Number

题目:Given a digit string, return all possible letter combinations that the number could represent. A...
  • dongtaizl
  • dongtaizl
  • 2016年09月19日 16:22
  • 149

leetcode No17. Letter Combinations of a Phone Number

Question: Given a digit string, return all possible letter combinations that the number could rep...
  • u011391629
  • u011391629
  • 2016年06月22日 21:29
  • 281

leetcode 17. Letter Combinations of a Phone Number

题意 给定一个数字字符串,枚举各个数字对应的字母组合后的字符串(不重复)。 题解 一个串中字母的重复次数,即后面字母形成串的可能种数。 给定数字”234”,对应串“abc”、“def”、...
  • u010560443
  • u010560443
  • 2016年02月27日 16:47
  • 160

[Java]LeetCode17 Letter Combinations of a Phone Number

[Java]LeetCode17 Letter Combinations of a Phone Number
  • fumier
  • fumier
  • 2015年04月24日 09:47
  • 944

LeetCode#17 Letter Combinations of a Phone Number

Given a digit string, return all possible letter combinations that the number could represent.A mapp...
  • Acmer_Sly
  • Acmer_Sly
  • 2017年07月17日 20:36
  • 228

LeetCode-17.Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/ Given a digit string, retu...
  • zmq570235977
  • zmq570235977
  • 2016年05月18日 22:16
  • 189

LeetCode 17 Letter Combinations of a Phone Number(C,C++,Java,Python)

Problem: Given a digit string, return all possible letter combinations that the number could re...
  • runningtortoises
  • runningtortoises
  • 2015年05月10日 13:39
  • 2199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode OJ-17.Letter Combinations of a Phone Number(DFS)
举报原因:
原因补充:

(最多只允许输入30个字)