当前位置: 首页 > 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…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...