美文网首页LeetCode
17.电话号码的字母组合

17.电话号码的字母组合

作者: 闭门造折 | 来源:发表于2018-09-26 22:09 被阅读33次

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    1——空
    2——abc
    3——def
    4——ghi
    5——jkl
    6——mno
    7——pqrs
    8——tuv
    9——wxyz

    示例:

    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

    说明:
    尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

    思路:
    递归每个按键内容,每次传值为当前字符串,如果长度符合规范,存在结果中。

    具体代码

    using namespace std;
    //打表 存入按键信息
    string tele[12] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    //全局结果
    vector<string> result;
    //递归调用,无需返回值
    void letterAdd(string res, string digits, int count){
        if(count == digits.length()){
            result.add(res);
            return;
        }
        int num = digits[count] - '2';
        for(int i = 0; i < tele[num].length(); i++){
            //递归时 采用res+新char的方式,这样递归返回时方便剔除末尾
            letterAdd(res + tele[num][i], num + 1);
        }
        return;
    }
    vector<string> letterCombinations(string digits) {
        letterAdd("", digits, 0);
        return result;
    }
    

    相关文章

      网友评论

        本文标题:17.电话号码的字母组合

        本文链接:https://www.haomeiwen.com/subject/untsoftx.html