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;
   }
};
posted @   Figure_at_a_Window  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示