LeetCode 17. Letter Combinations of a Phone Number

问题链接

LeetCode 17. Letter Combinations of a Phone Number

题目解析

将数字串转化为字符串,其中每个数字对应相应的字母(手机按键对应),返回所有可能的字符串。

解题思路

简单暴力,直接循环迭代即可。首先建立对应数组 \(NtoC\),遍历数字串,每取一个数字,将结果 \(res\) 中所有字符串一一取出来与之对应字符相加,再放回结果集中。

时间复杂度:\(O(n^2)\)

参考代码

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        vector<string> res;
        if(digits.empty()) return res;
        
        string NtoC[10] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        res.push_back("");
        for(int i = 0; i < digits.length(); i++) {
            string str = NtoC[digits[i] - '2'];
            int len = res.size();
            for(int j = 0; j < len; j++) {
                string head = res.front();
                res.erase(res.begin());
                for(int k = 0; k < str.length(); k++)
                    res.push_back(head + str[k]);
            }
        }
        return res;
    }
};

LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


posted @ 2018-03-20 17:54  AlvinZH  阅读(202)  评论(0编辑  收藏  举报