首页 > 其他分享 >leetcode.cn 17.电话号码的字母组合 - 生成组合数

leetcode.cn 17.电话号码的字母组合 - 生成组合数

时间:2022-12-04 05:44:05浏览次数:60  
标签:DIGITS digits ch cn 17 int str 字母组合 indexs

这题难度标为“中等”,那肯定不难。看完题,知道就是生成组合数。

想起当年上学的时候我还做过一个组合工具类。于是在磁盘上搜索,找到一看,原来当年是Java写的一个类,代码也很简单。于是我用C++把这题打完了,核心部分也就二十行左右代码。

 1 const string DIGITS[8] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
 2 int indexs[8];
 3 bool mynext(const char *str, int n) {
 4     indexs[n - 1]++;
 5     for (int i = n - 1; i > 0; i--) {
 6         int len = DIGITS[str[i] - '2'].length();
 7         if (indexs[i] >= len) {
 8             indexs[i - 1]++;
 9             indexs[i] = 0;
10         }
11     }
12     return (indexs[0] < DIGITS[str[0] - '2'].length());
13 }
14 
15 class Solution {
16 public:
17     vector<string> letterCombinations(string digits) {
18         char ch[5];
19         vector<string> ans;
20         int n = digits.size();
21         if (n == 0) {
22             return ans;
23         }
24         ch[n] = 0;
25         memset(indexs, 0, sizeof(indexs));
26         do {
27             for (int i = 0; i < n; i++) {
28                 ch[i] = DIGITS[digits[i] - '2'][indexs[i]];
29             }
30             ans.push_back(string(ch));
31         } while (mynext(digits.c_str(), n));
32         return ans;
33     }
34 };

 

标签:DIGITS,digits,ch,cn,17,int,str,字母组合,indexs
From: https://www.cnblogs.com/moonbay/p/16949344.html

相关文章

  • 1774. 最接近目标价格的甜点成本
    1774.最接近目标价格的甜点成本暴力classSolution{List<Integer>list=newArrayList<>();intm;intt;publicintclosestCost(int[]baseCos......
  • pwn | ciscn_2019_es_2
    pwn|ciscn_2019_es_2x86ret2text栈迁移这是我第一次做栈迁移的题目,浅浅记录一下思路关键的利用点在于利用leaveret的组合把esp搬到低地址的地方(也就是我们输入的地......
  • docker安装minio 2022-06-17T02-00-35Z
    minio版本太多,这个版本比较稳定dockerpull minio/minio:RELEASE.2022-06-17T02-00-35Zdockerrun-d-p3001:9000-p3002:9001--nameminio\-e"MINIO_ROOT_USER......
  • Leetcode 1796 寻找字符串中第二大的数字
    Leetcode1796寻找字符串中第二大的数字1、两次遍历(省略)2、一次遍历(max和second变量,代码省略)3、范围0-9,桶排序(代码如下)classSolution{public:intsecondHig......
  • 2022-2023-1 20221317《计算机基础与程序设计》第十四周学习总结
    作业信息这个作业属于哪个课程:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)这个作业的要求在:2022-2023-1《计算......
  • sql-lab 8-17 盲注加post传参
    布尔型盲注length()函数返回字符串的长度?id=1'and(length(database()))=8--qwesubstr()截取字符串(语法:SUBSTR(str,pos,len);)?id=1'and(ascii(substr(database......
  • CF1710 题解
    比赛链接:https://codeforces.com/contest/1711BD比以往的要难,E要更简单A水题//bySkyRainWind#include<cstdio>#include<vector>#include<cassert>#include<c......
  • 取色器TakeColor8.0 CN Green下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【1011】即可获取下载链接。......
  • 「遍历」字符串中第二大的数字(力扣第1796题)
    本题为12月3日力扣每日一题题目来源:力扣第1796题题目tag:遍历题面题目描述给你一个混合字符串s,请你返回s中第二大的数字,如果不存在第二大的数字,请你返回-1。混合......
  • leetcode.cn 10.正则表达式匹配 记忆化搜索
    心血来潮想刷刷题玩,想起leetcode,注册登录,知道leetcode上的题都比较简单,就勾选难度为“困难”,然后看到此题。读完题,心想这标为“困难”,该不会是得用DFA甚至NFA吧?又仔细看......