【算法刷题 | 回溯思想 02】4.12(电话号码的字母组合)

news2024/11/24 22:23:50

在这里插入图片描述

文章目录

  • 4.电话号码的字母组合
    • 4.1问题
    • 4.2解法:回溯
      • 4.2.1回溯思路
        • (1)函数返回值以及参数
        • (2)终止条件
        • (3)遍历过程
      • 4.2.2代码实现

4.电话号码的字母组合

4.1问题

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

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

img

  • 示例一:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

4.2解法:回溯

4.2.1回溯思路

  • 注意:
    • 前面两个题目(组合、组合总和||)是在同一个集合中求组合
    • 该题是在不同集合中求组合
List<String> res:最终返回结果
StringBuffer paths:当前路径
String[] numsString={
	"",
	"",
	"abc",
	"def",
	"ghi",
	"jkl",
	"mno",
	"pqrs",
	"tuv",
	"wxyz"
}
(1)函数返回值以及参数
  • digits:题目给的数字字符串
  • cur:当前遍历的第几个数字
private void backtracking(String digits,int cur)
(2)终止条件
if( cur == digits.length() ){
    res.add( paths.toString() );
    return;
}
(3)遍历过程
String arr=numsString[ digits.charAt(cur)-'0' ];	//取出对应数字的字符串

for(int i=0;i<arr.length();i++){				//遍历字符串
    paths.append(arr[i]);
    backtracking(digits,cur+1);
    //回溯
    paths.deleteCharAt(paths.size()-1);
}

4.2.2代码实现

class Solution {

    List<String> res=new ArrayList<>();
    StringBuffer paths=new StringBuffer();
    String[] numsString={
	    "",
	    "",
	    "abc",
	    "def",
	    "ghi",
	    "jkl",
	    "mno",
	    "pqrs",
	    "tuv",
	    "wxyz"
    };
    
    public List<String> letterCombinations(String digits) {
        if(digits.length()==0){
            return res;
        }
        backtracking(digits,0);
        return res;
    }

    private void backtracking(String digits,int cur){
        if( cur == digits.length() ){
            res.add( paths.toString() );
            return;
        }
        String arr=numsString[ digits.charAt(cur)-'0' ];	//取出对应数字的字符串

        for(int i=0;i<arr.length();i++){				//遍历字符串
            paths.append(arr.charAt(i));
            backtracking(digits,cur+1);
            //回溯
            paths.deleteCharAt(paths.length()-1);
        }
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阻塞队列和生产消费模型

阻塞队列 阻塞队列的概念 队列相信我们已经不陌生了 之前也学过很多队列 比如: 普通队列 和 优先级队列 两种 这两种队列都是线程不安全的 而我们讲的阻塞队列 刚好可以解决线程安全问题 也是先进先出 并且带有阻塞功能. 阻塞功能是怎么回事呢 就是如果入队的时候阻塞队列为…

AI的智商如何测试?

一、AI的智商测试 AI的智商测试不同于人类的智商测试&#xff0c;因为它涉及到不同类型的智能和功能衡量标准。以下是几种常见的AI智商测试或评估方式&#xff1a; 此图片来源于网络 1. **功能性测试**&#xff1a; - 对于算法或机器学习模型&#xff0c;可以通过标准化的基…

探秘大模型:《提示工程:技巧、方法与行业应用》背后的故事

提示工程是一种新兴的利用人工智能的技术&#xff0c;它通过设计提示引导生成式 AI 模型产生预期的输出&#xff0c;来提升人与 AI 的互动质量&#xff0c;激发 AI 模型的潜力&#xff0c;提升AI的应用水平。 为了让每一个人都拥有驱动大模型的能力&#xff0c;以微软全球副总裁…

maven之pom中的build标签

1、build标签分类 1.1、全局配置&#xff08;project build&#xff09; 针对整个项目的所有情况都有效。 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"htt…

Linux执行命令监控详细实现原理和使用教程,以及相关工具的使用

Linux执行命令监控详细实现原理和使用教程&#xff0c;以及相关工具的使用。 0x00 背景介绍 Linux上的HIDS需要实时对执行的命令进行监控&#xff0c;分析异常或入侵行为&#xff0c;有助于安全事件的发现和预防。为了获取执行命令&#xff0c;大致有如下方法&#xff1a; 遍…

OJ 古籍翻译 【进制转化】【C】

这里有两个考察点&#xff0c;一个是进制转换&#xff0c;还有一个是以字符串输出 知识点&#xff1a; sprintf(参数一&#xff0c;参数二&#xff0c;参数三) 将参数三按参数二的格式转换后存入参数一中 sprintf与printf用法基本一样&#xff0c;只是sprintf是将值打印到指…

R语言数据可视化:基本绘图系统

目录 plot函数 par函数 hist函数 boxplot函数 plot函数应用实战 全局参数 R语言中有三大绘图系统包括基本绘图系统&#xff0c;Lattice绘图系统&#xff0c;ggplot2绘图系统 基本绘图系统 在R语言中&#xff0c;以下函数通常用于创建和定制图形&#xff1a; plot 函数…

ansible的常见用法

目录 ##编辑hosts文件 ##copy模块##复制过去 ##fetch模块##拉取 ##shell模块 ##好用 ##command模块## ##file模块### ##cron模块### ##crontab 计划任务 ##下载好时间插件 ##script模块 ##yum模块## ##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo ##ser…

时间序列分析 # 平稳性检验和ARMA模型的识别与定阶 #R语言

掌握单位根检验的原理并能解读结果&#xff1b;掌握利用序列的自相关图和偏自相关图识别模型并进行初步定阶。 原始数据在文末&#xff01;&#xff01;&#xff01; 练习1、根据某1971年9月-1993年6月澳大利亚季度常住人口变动&#xff08;单位&#xff1a;千人&#xff09;的…

MySQL 嵌套查询

嵌套查询 是指在一个完整的查询语句之中&#xff0c;包含若干个不同功能的小查询&#xff1b;从而一起完成复杂查询的一种编写形式。包含的查询放在&#xff08;&#xff09;里 &#xff0c; 包含的查询出现的位置&#xff1a; 位置含义SELECT之后把查询结果作为表头使用FROM…

ubuntu20.04.3挂载共享文件夹

VMware设置win共享文件夹 在linux执行挂载命令 sudo vmhgfs-fuse /mnt/hgfs/ -o nonempty这样就可以用管理员访问/mnt/hgfs/share

场景:如何做数据清理

如果数据清理简单粗暴按时间进行清理&#xff0c;同时时间字段并没有增加索引就会出问题 如果没有增加索引&#xff0c;他就会进行全表扫描&#xff0c;并且会给全表的数据上一个x锁 会阻塞其他的线程 解决方案参考阿里云DMS数据清理方案 这个SQL查询的目的是从名为table_hol…

2024年mathorcup数学建模思路及论文助攻

题目C题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包裹按照不同流向进行分拣并发往下一个场地&#xff0c;最终使包裹到达消费者…

Towards Street-Level Client-Independent IP Geolocation(2011年)(第一部分)

被引次数:306 Wang Y, Burgener D, Flores M, et al. Towards {Street-Level}{Client-Independent}{IP} Geolocation[C]//8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11). 2011. Abstract 一个高度精确的客户端独立的地理定位服务将是互联…

电商广告中的OCPC是什么?OCPC原理是什么?

1.定义&#xff1a; OCPC是指optimized cost per click&#xff08;以目标转化为优化方式的点击出价&#xff09;&#xff0c;本质还是按照cpc付费。 2.三大特点&#xff1a;抢流量、避免无效流量、提高转化&#xff1b; 3.放量原理&#xff1a; 通过捕捉用户行为、行业数据…

数组算法——查询位置

需求 思路 使用二分查找找到第一个值&#xff0c;以第一个值作为界限&#xff0c;分为左右两个区间在左右两个区间分别使用二分查找找左边的7,&#xff1a;找到中间位置的7之后&#xff0c;将中间位置的7作为结束位置&#xff0c;依次循环查找&#xff0c;知道start>end,返回…

股票价格预测 | Python使用LSTM预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 Python使用LSTM预测股票价格 代码设计 import pandas as pd import matplotlib.pyplot as plt import numpy as np import tensorflowfrom numpy import

mui和uniapp跳转外部链接

Hbuilder开发的app&#xff0c;会涉及到跳转H5页面 mui <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno" /><link …

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…

浮点数加减运算、强制类型转换

目录 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a;1、对阶2、尾数加减3、规格化&#xff08;左规和右规&#xff09;4、舍入5、判断溢出 三、数据类型转换 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a; 1、对…