题目链接:https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/
题目介绍:给定一个数字字符串,返回数字可能表示的所有可能的字母组合。数字到字母的映射就像电话按钮一样。
解题思路:先计算所有可能组合的总数n,生成一个n个字符串的列表,然后计算到第i个数字时所有字符串第i个字符应该对应的字符
代码如下:
class Solution {
public:
vector<string> letterCombinations(string digits) {
if (digits == "") {
vector<string> str;
return str;
}
vector<string> shuzi(10);
shuzi[2] = "abc";
shuzi[3] = "def";
shuzi[4] = "ghi";
shuzi[5] = "jkl";
shuzi[6] = "mno";
shuzi[7] = "pqrs";
shuzi[8] = "tuv";
shuzi[9] = "wxyz";
int num = 1;
int* n = new int[digits.length()]();
for (int i = 0; i < digits.length(); i++) {
if ((digits[i] - 48) == 7 || (digits[i] - 48) == 9)
{
n[i] = 4;
}
else
{
n[i] = 3;
}
num *= n[i];
}
vector<string> str(num);
int a = 1;
for (int i = 0; i < digits.length(); i++) {
a *= n[i];
for (int j = 0; j < a; j++) {
for (int k = 0; k < num / a; k++) {
str[j*num / a + k] += shuzi[digits[i]-48][j%n[i]];
}
}
}
return str;
}
};