问题链接
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和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.