当前位置: 首页 > news >正文

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'}},
}

2.2 编程实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>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;
}

相关文章:

leetcode-电话号码组合(C CODE)

1. 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits “23” 输出&#…...

Leetcode92. 反转链表 II

Every day a Leetcode 题目来源&#xff1a;92. 反转链表 II 解法1&#xff1a;模拟 注意 STL 的 reverse() 是左闭右开的。 代码&#xff1a; class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right){vector<int> nums getNums(…...

【算法作业记录】

插入排序 递归实现 直接插入 #将a[n]插入有序区间a[0,n-1]中 时间复杂度 O&#xff08;n&#xff09; def Insert(a,n):inwhile(i>0 and a[i-1]>a[i]):tmpa[i]a[i]a[i-1]a[i-1]tmpi-1return #直接插入排序 def Insertsort(a,n):for i in range(1,n):#【1&#xff0c;n-…...

回归预测、分类预测、时间序列预测 都有什么区别?

回归预测、分类预测和时间序列预测都是统计和机器学习领域中的预测任务&#xff0c;它们在问题设置和解决的方式上有一些关键区别&#xff1a; 回归预测&#xff1a; 回归预测用于预测连续数值的输出&#xff0c;通常是实数。例如&#xff0c;预测房价、气温、销售额等连续型输…...

关于网络协议的若干问题(三)

1、当发送的报文出问题的时候&#xff0c;会发送一个 ICMP 的差错报文来报告错误&#xff0c;但是如果 ICMP 的差错报文也出问题了呢&#xff1f; 答&#xff1a;不会导致产生 ICMP 差错报文的有&#xff1a; ICMP 差错报文&#xff08;ICMP 查询报文可能会产生 ICMP 差错报文…...

办公室人人在用的iTab桌面真的好用吗?

本人坐标北京&#xff0c;在一家中型互联网公司当社畜多年。最近发现一个奇怪的现象&#xff0c;我工位前后左右的同事都跟我在用一样的浏览器桌面——iTab新标签页。我表示莫非真的英雄所见略同&#xff1f; 我是去年1月份在刷B站时偶然刷到一条评论&#xff0c;有人分享自己…...

循环中的else语句

while 循环else结构: 循环可以和else配合使用&#xff0c;else下方缩进的代码指的是当循环正常结束之后要执行的代码. 需求&#xff1a;女朋友生气了&#xff0c;要惩罚&#xff1a;连续说5遍“老婆大人&#xff0c;我错了”&#xff0c;如果道歉正常完毕后女朋友就原谅我了:…...

三.镜头知识之FOV

三.镜头知识之视场角 最近试了很多sensor, 每次在选镜头时都对其提到的FOV参数一头雾水。不同的sensor要配不同的镜头&#xff0c;而不同的镜头由于焦距的不同&#xff0c;FOV也不一样。这其中有什么联系呢&#xff1f;FOV又分为HFOV(水平&#xff09;, VFOV( 垂直&#xff09…...

分布式事务入门

文章目录 分布式事务问题本地事务分布式事务演示分布式事务问题 理论基础CAP定理一致性可用性分区容错矛盾 BASE理论 SeataSeata的架构部署TC服务微服务集成seata 动手实践XA模式两阶段提交Seata的XA模型实现XA模式 AT模式Seata的AT模型流程梳理脏写问题实现AT模式 TCC模式流程…...

Ubuntu的中文乱码问题

一、Ubuntu的中文乱码问题 sudo apt-get install language-pack-zh-hans 二、修改/etc/environment&#xff08;在文件的末尾追加&#xff09;&#xff1a; LANG"zh_CN.UTF-8" LANGUAGE"zh_CN:zh:en_US:en" 三、修改/var/lib/locales/supported.d/loca…...

[GXYCTF2019]Ping Ping Ping - RCE(空格、关键字绕过[3种方式])

[GXYCTF2019]Ping Ping Ping 1 解题流程1.1 小试牛刀1.2 三种解法1.2.1 解法一:变量定义拼接绕过1.2.2 解法二:base64编码绕过1.2.3 解法三:内联执行绕过2 思考总结1 解题流程 1.1 小试牛刀 1、提示?ip,结合题目名称,我们直接输入?ip=127.0.0.1 PING 127.0.0.1 (127.…...

ceph 分布式存储与部署

目录 一、存储基础&#xff1a; 1.单机存储设备&#xff1a; 2. 单机存储的问题&#xff1a; 3. 商业存储解决方案&#xff1a; 4. 分布式存储&#xff1a; 5. 分布式存储的类型&#xff1a; 二、Ceph 简介&#xff1a; 三、Ceph 优势&#xff1a; 四、Ceph 架构&#xff1a…...

Go 结构体深度探索:从基础到应用

1. 结构体概述 在计算机编程中&#xff0c;数据结构是组织、管理和存储数据的一种方式&#xff0c;它允许高效地执行各种操作。Go语言中的结构体&#xff08;Struct&#xff09;是这些数据结构中的一员&#xff0c;它为数据的组织提供了一种具体的方式。 结构体可以被视为是多…...

分布式系统开发技术中的CAP定理原理

分布式系统开发技术中的CAP定理原理 在分布式系统开发中&#xff0c;CAP定理&#xff08;一致性、可用性和分区容忍性&#xff09;是指导我们设计、开发和维护系统的核心原理。该定理阐述了分布式系统中一致性、可用性和扩展性之间无法同时满足的矛盾关系&#xff0c;为我们提…...

Mysql 报错 You can‘t specify target table ‘表名‘ for update in FROM clause

翻译为&#xff1a;不能先select出同一表中的某些值&#xff0c;再update这个表(在同一语句中&#xff09; 多半是update在where条件后又Select了一次&#xff0c;所以报错 SQL&#xff1a; UPDATE a SET a.name 1 WHERE a.id in (SELECT a.id FROM a WHERE ISNULL(a.id)) …...

【DevOps】DevOps—基本概念

文章目录 1. DevOps2. CI/CD 1. DevOps 维基百科定义&#xff1a; DevOps是一组过程、方法与系统的统称&#xff0c;用于促进 开发、技术运营 和 质量保障&#xff08;QA&#xff09; 部门之间的沟通、协作与整合。我理解DevOps是一种软件管理思维模式。 为什么会有DevOps呢&…...

发行版兴趣小组季度动态:Anolis OS 支持大热 AI 软件栈,引入社区合作安全修复流程

发行版兴趣小组&#xff08;Special Interest Group&#xff09; &#xff1a;旨在为龙蜥社区构建、发布和维护一个稳定的操作系统发行版。 秋天的季节&#xff0c;发行版兴趣小组在 AI、安全、国产 OS 领域同样也是硕果累累。一起来看一下第三季度发行版兴趣小组的成果总结有…...

android app开发环境搭建

Android是流行的移动设备原生应用开发平台&#xff0c;其支持Java语言以及Kotlin语言的开发环境&#xff0c;本文主要描述官方提供的Android studio集成开发环境搭建。 https://developer.android.google.cn/ 如上所示&#xff0c;从官方上下载最新版本的Android studio集成开…...

oracle入门笔记一

关系型数据库&#xff08;Oracle&#xff09; 一、市面上流行的关系型数据库 大型数据库&#xff1a;oracle&#xff08;甲骨文&#xff09;、DB2&#xff08;IBM&#xff09;、sysbase&#xff08;sysbase&#xff09; 百万以上数据 中型数据库&#xff1a;mysql…...

linux下安装ffmpeg的详细教程、ffmpeg is not installed

1、下载解压 wget http://www.ffmpeg.org/releases/ffmpeg-6.0.tar.gz tar -zxvf ffmpeg-6.0.tar.gz 2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录 cd ffmpeg-6.0 ./configure --prefix/usr/local/ffmpeg make sudo make install 3、配置变量 v…...

Windows热键冲突终极排查指南:5分钟快速定位占用进程

Windows热键冲突终极排查指南&#xff1a;5分钟快速定位占用进程 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...

CTFHUB-网站源码泄露实战:从备份文件到Flag获取

1. 源码泄露漏洞的成因与危害 在CTF比赛中&#xff0c;网站源码泄露是一种常见的安全漏洞类型。这种漏洞通常是由于开发人员的疏忽操作导致的&#xff0c;比如将源代码备份文件直接存放在Web可访问目录下。我就遇到过不少这样的情况&#xff0c;有些开发团队为了图方便&#xf…...

Translumo终极指南:3个简单技巧掌握实时屏幕翻译

Translumo终极指南&#xff1a;3个简单技巧掌握实时屏幕翻译 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾在游…...

告别密集计算:用SpConv稀疏卷积加速3D点云处理(附PyTorch代码示例)

告别密集计算&#xff1a;用SpConv稀疏卷积加速3D点云处理实战指南 在自动驾驶和机器人感知领域&#xff0c;LiDAR点云数据的处理一直是计算密集型任务的代表。传统3D卷积神经网络在处理这类数据时&#xff0c;往往需要消耗大量显存和计算资源&#xff0c;而实际上点云数据的有…...

从零到一:基于Playwright与OpenCV的滑块验证码自动化破解实战

1. 环境准备与工具介绍 第一次接触滑块验证码自动化破解时&#xff0c;我也被那些复杂的图像处理算法吓到了。但实际用下来发现&#xff0c;只要选对工具组合&#xff0c;整个过程比想象中简单得多。这里我推荐PlaywrightOpenCV这对黄金搭档——前者是微软开源的浏览器自动化工…...

文献综述效率提升300%?NotebookLM在区域地理分析中的7个颠覆性用法,含真实课题复现代码

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM地理学研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度语义理解与问答的 AI 工具&#xff0c;其在地理学研究中展现出独特价值——尤其适用于处理多源异构的地理文献、野外调…...

Git 查看某个文件的修改记录

Git 查看某个文件的修改记录 git log – filename filename为全路径 git log – aa/bb/cc/dd/ee/ff.c...

工业物联网数据上云省钱实战:边缘预处理与协议瘦身详解

背景与问题 工业物联网项目落地时&#xff0c;带宽费用往往是降本增效的第一道坎。几百台设备每秒上传数据&#xff0c;每月带宽费轻易上万&#xff0c;其中大量数据属于冗余“常态数据”。本文记录一套低成本方案&#xff1a;通过边缘计算网关做数据清洗与协议压缩&#xff0c…...

树莓派Pico舵机控制库picoclaw:从PWM原理到多舵机机器人应用

1. 项目概述&#xff1a;一个为树莓派Pico量身打造的舵机控制库如果你玩过树莓派Pico&#xff0c;并且尝试过用它来控制舵机&#xff0c;那你大概率会遇到一个头疼的问题&#xff1a;Pico的MicroPython固件本身并没有内置专门的舵机控制库。这意味着你需要自己动手&#xff0c;…...

【限时开放】Midjourney未来主义风格权威认证路径:完成这5个里程碑任务,获取由Adobe+MJ Labs联合签发的Futurism Prompt Architect证书

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;【限时开放】Midjourney未来主义风格权威认证路径&#xff1a;完成这5个里程碑任务&#xff0c;获取由AdobeMJ Labs联合签发的Futurism Prompt Architect证书 什么是未来主义Prompt架构师认证&#xf…...