【组合递归】【StringBuilder】Leetcode 17. 电话号码的字母组合

【组合递归】【StringBuilde】Leetcode 17. 电话号码的字母组合

  • StringBulider常用方法!!!!!!!!!!!!!!
    • 17. 电话号码的字母组合 解法 组合问题递归回溯

for循环横向遍历,递归纵向遍历,回溯不断调整结果集
for循环横向遍历,递归纵向遍历,回溯不断调整结果集
for循环横向遍历,递归纵向遍历,回溯不断调整结果集
for循环横向遍历,递归纵向遍历,回溯不断调整结果集
for循环横向遍历,递归纵向遍历,回溯不断调整结果集

---------------🎈🎈题目链接 17. 电话号码的字母组合🎈🎈-------------------

StringBulider常用方法!!!!!!!!!!!!!!

在这里插入图片描述
在这里插入图片描述

创建StringBuilder:StringBuilder sb = new StringBuilder();
添加元素:sb.append( )
获取字符串的长度:sb.length()
删除最后一个字符:sb.setLength(sb.length()-1)
获取指定位置的字符sb.charAt()
转化为字符串:sb.toString()


17. 电话号码的字母组合 解法 组合问题递归回溯

在这里插入图片描述

在这里插入图片描述

关键点:
采用StringBuilder对字符串进行动态操作
创建一个数组存储对应数字的字母即可!!! 【采用了字符串数组】
获取“23”中的“2” 并且在上面说的字符串数组中得到“abc”: 方法如下:

  int nowindex = digits.charAt(count) - '0';   // 根据字符串数字->对应的数值
  String now = save[nowindex];  // 根据字符串数字对应的数值,取出来当前数字对应save里的字符串

使用count 来代表每次递归的时候该处理digits的第几个字符数字

class Solution {
    List<String> result = new ArrayList<>();
    StringBuilder sb = new StringBuilder();  // 采用StringBuilder对字符串进行动态操作

    public List<String> letterCombinations(String digits) {
        if (digits == null || digits.length() == 0) {
            return result;
        }
        // 创建一个数组存储对应数字的字母即可!!!!!!  【采用了字符串数组】
        String[] save = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        backtracking(save,digits,0);
        return result;

    }
    
    public void backtracking(String[] save, String digits, int count){ 
    // 回溯函数 字符数字对应表save 数字串digits 数字串中第几个数字count
        // 终止条件
        if(count == digits.length()){
            result.add(sb.toString());
            return;
        }
        
        // 递归回溯
        int nowindex = digits.charAt(count) - '0';   // 根据字符串数字->对应的数值
        String now = save[nowindex];  // 根据字符串数字对应的数值,取出来当前数字对应save里的字符串
        for(int i = 0; i < now.length(); i++){ // for循环遍历当前数字对应字符串的每一个字符
            sb.append(now.charAt(i));   
            backtracking(save, digits, count+1);  // 递归
            sb.setLength(sb.length()-1); // 回溯
        }
    }
}       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java宝典-抽象类和接口

目录 1. 抽象类1.1 抽象类的概念1.2 抽象类的语法1.3 抽象类的特点 2. 接口2.1 接口的概念2.2 接口的语法2.3 接口的特点2.4 实现多个接口2.5 接口的继承 3. 接口使用案例 铁汁们好,今天我们学习抽象类和接口~ 1. 抽象类 1.1 抽象类的概念 什么是抽象类?在面向对象中,如果一…

【Leetcode】top 100 双指针

283 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 分析&#xff1a;双指针初始为0&#xff1b;left指针找零值&#xff0c;right指针找非零值&#xff1b;由于需要保持非零元素的相对顺序&#xff0c…

02-组件化编程与Vu额 Click脚手架

1.Vue组件化编程(只有1个数字是一级标题) 1.1 模块与组件、模块化与组件化(两个数字组成是二级标题) 1.1.1模块(三个数字是三级标题 依次类推) 理解&#xff1a;向外提供特定功能的 js 程序&#xff0c;一般就是一个 js 文件为什么&#xff1a;js 文件很多很复杂作用&#xf…

【性能测试】性能测试各知识第1篇:性能测试大纲【附代码文档】

性能测试完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;性能测试大纲。。。。。。。。。。。。。。 全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 性能测试大纲 |序号|阶段|概述| |--…

【C++】三大特性之继承

1 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展、增加功能&#xff0c;这样产生新的类&#xff0c;称派生类&#xff08;或子类&#xff09;。而被继承的…

【NR 定位】3GPP NR Positioning 5G定位标准解读(九)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

云服务器python版本冲突解决(awd平台搭建)

文章目录 yum和apt-getdockerpython环境问题 大家在使用python时&#xff0c;难免会使用他人的代码&#xff0c;自己是python3&#xff0c;而别人的是python2.我们直接运行会报错(比如print函数括号的问题)。但是去修改代码又很麻烦。这里给大家推荐conda。我以我搭建awd平台为…

toB开发范式

前言 B端开发&#xff0c;也被称为后台开发或者企业级开发&#xff0c;是针对企业或者组织的业务需求进行的软件开发。在 B 端开发中&#xff0c;我们通常关注的是系统的功能性、稳定性、可扩展性以及安全性&#xff0c;从面向过程编程 -> 面向对象编程 组合式编程 以下是…

【谈一谈】并发_Synchronized

Synchronized 又到周末了,最近的话(有点子小日子不好过,哈哈哈!~)但是,我还是报之以歌哈哈哈 本次写关于并发_Synchronized的优化以及底层实现原理 说说心里话~其实是非常的累,原因应该怎么说呢?我发现自己在如今的这家公司,我处于一种活多钱少以及关键现在给的或自己不想干,因…

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…

关于安卓ZXing条码识别(一)引入源码

背景 从0-1引入安卓zxing&#xff0c;实现条码识别 环境 win10 as4 jdk8 引入 首先&#xff0c;官方网站&#xff0c;就是源码。链接 选择你要引入的分支&#xff0c;这里博主选择的是最近更新的分支&#xff0c;如下图&#xff1a; 上图中&#xff0c;1和2都需要引入&am…

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答传输层安全(TLS)

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答&传输层安全(TLS) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 一、赛项时间&#xff1a;二、赛项信息三、竞赛内容&#xff1a;第一阶段任务书&#xff08;300分&#xff09;任务1&#xff1a;网络平台搭建&#xff08;60分&#xff09;任务2&#xff1a;网络安全设备…

23 经典卷积神经网络 LeNet【李沐动手学深度学习v2课程笔记】 (备注:提到如何把代码从CPU改到在GPU上使用)

目录 1. LeNet 2. 实现代码 3. 模型训练 4. 小结 本节将介绍LeNet&#xff0c;它是最早发布的卷积神经网络之一&#xff0c;因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的&#xff08;并以其命名&…

第十九天-分布式爬虫scrapy-redis

1.scrapy-redis介绍 1.scrapy框架程 2.分布式爬虫将多个主机组合起乱来&#xff0c;完成一个爬虫任务&#xff0c;快速高效的提高爬虫效率 3.scrapy-redis框架&#xff0c; 优点&#xff1a;1.加快项目的运行速度2.单节点不稳定不影响整个系统的稳定性 3.断点续爬 缺点&…

基于C++和Qt Creator实现的仿制网易云音乐播放器

目录 总体介绍开发环境技术介绍项目目录项目介绍特殊说明Gitee地址 总体介绍 仿照网易云播放器界面实现&#xff0c;目的在于锻炼C编程能力&#xff0c;熟练掌握Qt Creator各种组件的使用及样式设置、界面布局、QtPlugin技术、QXml读写XML文件方法、Qss文件的编写及使用等。 …

【笔记】全国大学生GIS应用技能大赛练习总结

该总结笔记为小组成员在练习完毕了历届题目后自我总结的结果&#xff0c;如有不足之处可以在评论区提出&#xff0c;排版较乱往谅解 绘制带空洞的面要素&#xff1a; 法一&#xff1a; 1、矢量化整个区域。2、矢量化空洞区域。3、将矢量化空洞区域进行合并&#xff08;编辑器…

【MySql学习之路】window环境下MySql安装和安装过程中出现的问题

environment:windows software:mysql 本文主要分享mysql关系型数据库在干净的环境下,第一次安装以及在安装过程中出现的常见问题和解决方法。目前官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文件无从…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出&#xff1a; 越看会越深入&#xff0c;睡前难以想通&#xff0c;后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

面试经典150题【61-70】

文章目录 面试经典150题【61-70】61.旋转链表86.分隔链表104. 二叉树的最大深度100.相同的树226.翻转二叉树101.对称二叉树105.从前序与中序遍历序列构造二叉树106.从后序和中序遍历序列构造二叉树117.填充每个节点的下一个右侧节点指针II114.二叉树展开为链表 面试经典150题【…