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;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人