同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

传统手机透过数字键来打字,一个数字键通常代表了多个英文字母,例如2 代表a , b , c ,3 代表d , e , f 等,连续按多个键能产生英文字母的组合,此题为给定数字,输出所有可能的英文字母组合。

题目与范例如下

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example 1:

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Example 2:

Input: digits = ""
Output: []
Example 3:

Input: digits = "2"
Output: ["a","b","c"]

Constraints:

0 <= digits.length <= 4
digits[i] is a digit in the range ['2', '9'].
Accepted
861,326
Submissions
1,706,491


解题方式为透过递归的方式,透过 for 回圈把每个数字可能的英文字母遍历出来,分别递归。填完字母后,补上结束字元 ' \0 ' 转存回要回传的空间内。

下方为我的代码

char map[10][5]={{},{},{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'},{'m','n','o'},{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}};
int reindex = 0;
char **re;
char *DPtr;
void Rnum( int index, char *tempstr){  // index use for input string index and tempstr indexif(DPtr[index] == '\0'){tempstr[index] = '\0';re[reindex] = (char*)malloc(sizeof(char)*(strlen(DPtr)+1));strcpy(re[reindex],tempstr);reindex++;}else{for(int i = 0;i<strlen(map[DPtr[index]-'0']);i++){tempstr[index] = map[DPtr[index]-'0'][i];Rnum(index+1,tempstr);}}
}char ** letterCombinations(char * digits, int* returnSize){DPtr = digits;reindex = 0;if(strlen(digits) != 0){(*returnSize) = 1;for(int i = 0 ; i < strlen(digits) ; i++ ){(*returnSize) *= strlen(map[digits[i]-'0']);}}else{(*returnSize) = 0;}re = (char**)malloc(sizeof(char*)*(*returnSize));char tempstr[5] = {0};if((*returnSize)>0)Rnum( 0, tempstr);return re;}

下方为时间与空间之消耗

Runtime: 0 ms, faster than 100 % of C online submissions for Letter Combinations of a Phone Number.

Memory Usage: 5.7 MB, less than 98.79 % of C online submissions for Letter Combinations of a Phone Number.

LeetCode (力扣) 17. Letter Combinations of a Phon (C) - Medium (递归法)相关推荐

  1. leetcode力扣17.电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...

  2. 17. Letter Combinations of a Phone Number (Medium)——电话号码的字母组合

    前言: 这是一道回溯算法的典型例题. 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入: ...

  3. 《LeetCode力扣练习》第17题 电话号码的字母组合 Java

    <LeetCode力扣练习>第17题 电话号码的字母组合 Java 一.资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数 ...

  4. 【DFS】LeetCode 17. Letter Combinations of a Phone Number

    LeetCode 17. Letter Combinations of a Phone Number Solution1:我的答案 利用8皇后同样的方法,回溯+递归 时间复杂度O(3n)O(3n)O( ...

  5. [ LeetCode ] #17. Letter Combinations of a Phone Number(电话按键组合字符 C++ Python)

    题目:17. Letter Combinations of a Phone Number Difficulty: Medium Given a string containing digits fro ...

  6. LeetCode 力扣算法题解汇总,All in One

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...

  7. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  8. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  9. 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java

    <LeetCode力扣练习>第96题 不同的二叉搜索树 Java 一.资源 题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回 ...

最新文章

  1. 第二次数据库作业--gui
  2. python3.82版本安装_CentOS7下安装Python3和Python2并存
  3. 【发布】温度监测报警器v1.1a内测版!
  4. SAP Basis: 从SAP GUI杀死进程
  5. python中对list去重的多种方法
  6. 给微软的日志框架写一个基于委托的日志提供者
  7. 前端学习(497):布局之居中布局
  8. canvas笔记-画一个五角星(含算法)
  9. SQL Server 中的case when then else 中的结果类型
  10. eclipse改变默认的编码格式(UTF-8)
  11. python自动发帖源码_Python3实现的 自动发帖小工具 -电脑资料
  12. 曾辉机器人_工业机器人市占率5年来首现下滑 “春寒”中国产机器人如何突围?...
  13. java毕业设计论文题目javaweb图书借阅管理系统[包运行成功]
  14. vue项目通讯录_vue组件--通讯录
  15. 紫色范冰冰WIN7主题包
  16. Apple ID Your Account Cannot Be Created at This Time
  17. 小米运动蓝牙耳机使用说明书-如果第二次切换到配对状态
  18. java爬虫入门第二弹——通过URL下载图片(以下载百度logo为例)
  19. 【论文阅读】[CVPR 2018] PU-Net: Point Cloud Upsampling Network. [tensorflow] [rec. oth.]
  20. Resilio Sync 无法获取追踪器列表 解决方法

热门文章

  1. 【读书笔记】《怪诞行为学》丹·艾瑞里
  2. JAVA爬虫-上海公交线路爬取
  3. java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用
  4. 程序无法启动因为计算机丢失msvcr110,解决启动Apache时出现因为计算机丢失MSVCR110.dll文件...
  5. 【微信跳转接口】微信引导用户右上角打开浏览器,访问APP下载链接
  6. centos7.6 服务器搭建Java环境(若依--srs)
  7. 圆上任意四点在同一个半圆上的概率
  8. gprs实用技巧:gprs模块tcp连接稳定性测试
  9. 浅析SFX脚手架源码
  10. 传陌陌科技公司将赴美IPO