leetcode17. 电话号码的字母组合

2023-11-03 09:59

本文主要是介绍leetcode17. 电话号码的字母组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、题目链接和介绍

leetcode 链接:17. 电话号码的字母组合 - 力扣(LeetCode) 

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

二、思路步骤

这题我们可以采用深度优先遍历(dfs)的方式来进行解决。就是依次取每个数字编号所对应的字符串的字母进行组合,最后便可以得到所有的字母组合。

这道题我们需要4个函数参数进行递归插入字符串。

步骤:

  1. 取数字字符映射的字符串,然后以该字符串进行循环。
  2. 将当前字符串中的第 j 个字符插入到临时字符串中进行递归。
  3. 如果数字编号超过了 digits.size(),我们就将临时字符串中的数据插入到存储容器中。 

三、代码部分

//数字字符对应的字符串数组
const char* arr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
class Solution {
public:void getstr(string digits,int i,string str,vector<string>& v){//下标超过字符串的大小if (i==digits.size()){//插入数据v.push_back(str);return ;}//取数字字符映射的字符串int num=digits[i++]-'0';string s=arr[num];//排列组合——递归for (auto ch:s){getstr(digits,i,str+ch,v);}}vector<string> letterCombinations(string digits) {vector<string> v;string str;//如果传来的不是空串if (digits!="")getstr(digits,0,str,v);return v;}
};

这篇关于leetcode17. 电话号码的字母组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/337381

相关文章

第十七题:电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有可能的由它组成的字母组合。你可以假设输入字符串至少包含一个数字,并且不超过3位数字。 实现思路 使用哈希表或数组存储每个数字对应的字符,然后通过递归或迭代的方式生成所有可能的组合。如果字符串长度为n,则可以看作是n层循环,每层循环可以选择对应数字的所有字符之一。 算法实现 C语言实现 #include <stdio.h>#inc

代码随想录算法训练营第十九天| 回溯理论、77. 组合、216. 组合总和Ⅲ、17. 电话号码的字母组合

今日内容 回溯的理论基础leetcode. 77 组合leetcode. 216 组合总和Ⅲleetcode. 17 电话号码的字母组合 回溯理论基础 回溯法也叫回溯搜索法,它是一种搜索的方式,而且只要有递归就会有回溯,回溯就是递归的副产品。 回溯说到底并不是什么非常高深的搜索方式,本质上仍然是穷举,穷举所有可能然后选择出我们要的答案。剪枝会使回溯法更加高效一点,但改变不了回溯本质就是穷举

android根据电话号码查询联系人名称,导出通讯录所有联系人的方法

/**      * 根据电话号码取得联系人姓名      */     public static String getContactNameByPhoneNumber(Context context, String address) {         String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NA

算法打卡 Day28(回溯算法)-组合总数 + 组合总数 Ⅱ+ 电话号码的字母组合

文章目录 Leetcode 17-电话号码的字母组合题目描述解题思路 Leetcode 39-组合总数题目描述解题思路 Leetcode 216-组合总数 Ⅲ题目描述解题思路 Leetcode 17-电话号码的字母组合 题目描述 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/descrip

LintCode 电话号码的字母组合

Given a digit string excluded 01, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. 样例 给定 “

POJ1002电话号码字符串

题目意思: 输入一个串,里面包含一些数字和一些大写字母,以及 - ,字母变换成数字,保证了7个数字,输出重复出现超多1次的电话号码以及次数。规模1e5。 粽子,被这个题目坑了很久,首先是用字符串保存最后的电话号码,二维sort好像不能用,但是string可以用sort,一直wa,今天发现了两个错误,一个是最后扫描个数的时候,会漏掉最后面的一个号码,调整过来又wa了,因为如果只有一组数据,输出了

回溯——3.电话号码的字母组合

力扣题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 解题思路总结: 映射表建立: 通过letterMap将数字0-9与对应的字母集合关联起来。递归生成组合: 使

Leetcode 17. 电话号码的字母组合 C++实现

Leetcode 17. 电话号码的字母组合 问题:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 算法:递归嵌套,先获取 digits 长度 n ,如果为 0 则直接返回空数组。创建 path 数组,path 数组的单个位置的长度由 digits 长度 n 来决定,有

刷题之电话号码的字母组合(leetcode)

电话号码的字母组合 在这里插入图片描述 回溯实现,但是需要练习一下C语言写法: class Solution {private:string phone[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};vector<string>result;string path;void backtracking(string s,int s

192.回溯算法:电话号码的字母组合(力扣)

代码解决 class Solution {public:// 定义每个数字对应的字母映射const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz" // 9}