码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode-电话号码组合(C CODE)


    1. 题目

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    在这里插入图片描述
    示例 1:

    输入:digits = “23”
    输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

    示例2:

    输入:digits = “”
    输出:[]

    示例 3:

    输入:digits = “2”
    输出:[“a”,“b”,“c”]

    提示:

    0 <= digits.length <= 4
    digits[i] 是范围 [‘2’, ‘9’] 的一个数字。

    2. 编程实现

    2.1 思路

    1. 如果输入长度为0,直接返回,没有排列组合;
    2. 如果输入长度是1,那么直接就找对应按键上边的字母输出;
    3. 如果输入长度大于1,例如是2

    两个数字的排列组合

    可以定义一个map表,把字母与数组做一个关系对应
    如:

    typedef struct {
    	int num;
    	char character[5];
    } map_t;
    
    map_t map[10] = {
    	{0, {}},
    	{1, {}},
    	{3, {'a','b','c'}},
    	{3, {'d','e','f'}},
    	{3, {'g','h','i'}},
    	{3, {'j','k','l'}},
    	{3, {'m','n','o'}},
    	{4, {'p','q','r','s'}},
    	{3, {'t','u','v'}},
    	{4, {'w','x','y','z'}},
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2 编程实现

    #include 
    #include 
    #include 
    
    typedef struct {
        int num;
        char letters[5];
    } map_t;
    
    map_t map[10] = {
        {0, {}},
        {1, {}},
        {2, {'a', 'b', 'c'}},
        {3, {'d', 'e', 'f'}},
        {4, {'g', 'h', 'i'}},
        {5, {'j', 'k', 'l'}},
        {6, {'m', 'n', 'o'}},
        {7, {'p', 'q', 'r', 's'}},
        {8, {'t', 'u', 'v'}},
        {9, {'w', 'x', 'y', 'z'}},
    };
    
    void generateCombinations(char* digits, int index, char* current, char** result, int* count) {
        if (digits[index] == '\0') {
            current[index] = '\0';
            result[(*count)] = strdup(current);
            (*count)++;
        } else {
            int digit = digits[index] - '0';
            for (int i = 0; i < map[digit].num; i++) {
                current[index] = map[digit].letters[i];
                generateCombinations(digits, index + 1, current, result, count);
            }
        }
    }
    
    char** letterCombinations(char* digits, int* returnSize) {
        int len = strlen(digits);
        char** result = (char**)malloc(sizeof(char*) * 10000);
        *returnSize = 0;
    
        if (len == 0) {
            return result;
        }
    
        char current[5] = {0};
        generateCombinations(digits, 0, current, result, returnSize);
    
        return result;
    }
    
    int main() {
        char* digits = "23"; // 你可以修改这里的输入数字字符串
        int returnSize;
        char** result = letterCombinations(digits, &returnSize);
    
        for (int i = 0; i < returnSize; i++) {
            printf("%s\n", result[i]);
            free(result[i]);
        }
    
        free(result);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
  • 相关阅读:
    HIS系统源码,云HIS源码,二级医院信息管理系统源码,预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站、护士工作站
    NumPy 数组迭代与合并详解
    一篇文章让你搞懂,Python文件操作
    2154. 将找到的值乘以 2
    前端刷题 | 网站
    计算机专业毕业设计演示视频(论文+系统)_kaic
    Spring源码系列-框架中的设计模式
    计算机毕业设计Java微服务毕业论文管理系统(源码+系统+mysql数据库+Lw文档)
    springboot+vue+Elementui共享单车管理系统
    软件测试生命周期包括哪些阶段?CMA、CNAS软件测试报告有什么作用?
  • 原文地址:https://blog.csdn.net/weixin_47139576/article/details/133771002
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号