LeetCode17. Letter Combinations of a Phone Number
题意
根据数字得到号码组合
方法
模拟
代码
class Solution {
public:
vector<string> letterCombinations(string digits) {
int len[]={0,0,3,3,3,3,3,4,3,4},length=digits.length();
if (length==0)//特殊情况单独处理
{
vector<string> s;
return s;
}
int x[length],num=stoi(digits),len_=1;
string digit[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
for (int i=0;i<length;i++)
{
x[length-1-i]=num%10;
len_*=len[num%10];
num/=10;
}
//准备工作完成,到此为止算好了所有需要的数据
vector<string> out(len_);
for (int i=0;i<length;i++)//几位数
{
int sum=1;
for (int l=0;l<i;l++)
sum*=len[x[l]];
for (int k=0;k<sum;k++)//大循环循环几次能循环完这个数
{
for (int m=0;m<len[x[i]];m++)//几个小循环组成大循环
{
int sum_=1;
for (int q=0;q<length-i-1;q++)
sum_*=len[x[length-1-q]];
for (int n=0;n<sum_;n++)//几个单字母组成小循环
out[(k*len[x[i]]+m)*sum_+n]+=digit[x[i]-2][m];
}
}
}
return out;
}
};

浙公网安备 33010602011771号