Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode Letter Combinations of a Phone Number

Leetcode algorithms 第 17 题:Letter Combinations of a Phone Number 。

题目

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.

解答

根据数字找到所有可能的字符组合,这是一个类似于全排列的问题。使用递归方式进行,递归每次处理一个数字,遍历所有可能的字母,当到达数字末尾时得到一个答案。

具体代码如下:

class Solution {
public:
    string s[10] = {" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    
    vector<string> letterCombinations(string digits) {
        vector<string> ans;
        f(0, "", digits, ans);
        return ans;
    }
    void f(int x, string cur, string digits, vector<string> &ans)
    {
        if (x == digits.size()) //到达末尾
        {
            ans.push_back(cur);
            return;
        }
        int d = digits[x] - '0';
        for (int i = 0; i < s[d].size(); i++) //枚举所有可能的字母
        {
            f(x+1, cur+s[d][i], digits, ans);
        }
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论