首页 > 其他分享 >计算机低能儿从0刷leetcode | 17.电话号码的数字组合 | 回溯思想

计算机低能儿从0刷leetcode | 17.电话号码的数字组合 | 回溯思想

时间:2024-09-24 23:49:46浏览次数:10  
标签:digits string 17 int res 递归 回溯 低能儿 leetcode

题目:17. 电话号码的字母组合

解答:看题解学习到这种思想叫做回溯法,学习了一下,这是建立在DFS的基础上搜索思路,还分为递归式回溯以及非递归式回溯,这道题使用的是递归回溯。递归回溯的大致框架如下:

void DFS(int i){//搜索第i层
    if(i>n){//搜索结束
               //结果处理(输出结果,方案计数等)
    }


    for(int j=下界;j<=上界;j++){
        if(限界函数&&约束条件){//满足限界函数和约束条件
            x[i]=j;//保存当前层的结果
            ...//回溯入场准备工作
            DFS(i+1);//搜索下一层
            ...//回溯退回清理工作
        }
    }
}

原文链接:https://blog.csdn.net/u011956367/article/details/120555480

应用在本题中,那就是:

class Solution {
public:
    string temp;//暂存字符串
    vector <string> res;//存储结果
    vector<string>map={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    

    void Back(int index, string digits){
        if(index==digits.size()) {//终止条件
            res.push_back(temp);
            return;
        }
   
        int num = digits[index]-'0';//根据数字字符的ASCII码,定位到上面map中对应的字符串下标
        string letter = map[num];//取出对应的元素,如“abc”
        for(int i=0;i<letter.size();i++){
            temp.push_back(letter[i]);
            Back(index+1,digits);
            temp.pop_back();
        }
    }



    vector<string> letterCombinations(string digits) {
        if(digits.empty()==true) return res;
         Back(0, digits);
         return res;
    }
};

标签:digits,string,17,int,res,递归,回溯,低能儿,leetcode
From: https://blog.csdn.net/weixin_74314153/article/details/142502937

相关文章

  • leetcode 2207. 字符串中最多数目的子序列
    3/100天刷题记录字符串中最多数目的子序列](https://leetcode.cn/problems/maximize-number-of-subsequences-in-a-string/)给你一个下标从0开始的字符串text和另一个下标从0开始且长度为2的字符串pattern,两者都只包含小写英文字母。你可以在text中任意位置......
  • 【算法题】20. 有效的括号-力扣(LeetCode)
    【算法题】20.有效的括号-力扣(LeetCode)1.题目下方是力扣官方题目的地址20.有效的括号给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对......
  • 【算法题】11. 盛最多水的容器-力扣(LeetCode)
    【算法题】11.盛最多水的容器-力扣(LeetCode)1.题目下方是力扣官方题目的地址11.盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的......
  • 【算法题】53. 最大子数组和-力扣(LeetCode)
    【算法题】53.最大子数组和-力扣(LeetCode)1.题目下方是力扣官方题目的地址53.最大子数组和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-......
  • 【LeetCode Hot 100】17. 电话号码的字母组合
    题目描述本题需要用回溯算法遍历穷举所有可能的解。回溯算法维护一个字符串序列,记录已经有的字母排列,用一个索引值记录该字符串序列下一个将要处理的位置。每次递归将索引值加一,回溯之后将字符串序列中上次加入的字符退出序列中,枚举下一个可能的值。总的来说是一个较为基础的回溯......
  • 题解:SP1741 TETRIS3D - Tetris 3D
    题意维护一个\(D\timesS\)的平面,每个点有一个高度。要求支持一个操作:查询一个矩形区域的最大值,并将该区域更新为最大值加上给定的数。分析发现\(D,S\leq10^3\),考虑使用二维线段树维护。二维线段树,顾名思义,就是在普通线段树的每一个节点上维护一棵线段树。在本题中,外层节......
  • bfs与优先队列 [NOIP2017 普及组] 棋盘————洛谷p3956
    [NOIP2017普及组]棋盘题目背景NOIP2017普及组T3题目描述有一个\(m\timesm\)的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右......
  • 【Vulfocus】struts2-cve_2017_9791漏洞复现
    一、漏洞介绍1.靶场地址:https://vulfocus.cn/2.漏洞名称:Struts2S2-048远程命令执行漏洞3.漏洞描述:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。攻击者构造恶意字段......
  • 3170. 删除星号以后字典序最小的字符串
    题目链接3170.删除星号以后字典序最小的字符串思路堆栈&位运算题解链接三种写法:26个栈+位运算优化(Python/Java/C++/Go)关键点1.用堆栈跟踪各个字母出现的位置2.用位运算跟踪当前最小字母(lowbit技巧)时间复杂度朴素做法:\(O(n\vert\Sigma\vert)\)位运算......
  • Centos7.9部署kubernetes(一主两从)(版本1.17.4)
    部署kubernetes1、环境准备IP系统配置角色192.168.8.180centos7.92H4Gmaster192.168.8.181centos7.92H4Gnode1192.168.8.178centos7.92H4Gnode22、在所有节点上关闭swap分区masternode#临时关闭swap分区swapoff-asysctl-wvm.s......