当前位置: 首页 > news >正文

剑指 Offer 46. 把数字翻译成字符串

摘要

剑指 Offer 46. 把数字翻译成字符串

一、递归算法解析

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

定义递归函数

  • dfs 函数求:「当前指针位置到末尾的数字」的翻译方法数。
  • 节点的状态用指针表示,dfs 入口传 0。
  • 如果指针 和 指针+1 对应的两位数在[10,25]内,则可以直译,有两种选择:
  •        翻译1个数,指针走一步,递归调用,返回出剩余数字的翻译方法数。
  •        翻译2个数,指针走两步,递归调用,返回出剩余数字的翻译方法数。
  •        二者相加,就是当前数字串的翻译方法数。
  • 如果指针 和 指针+1 对应的两位数不在[10, 25]内,则无法直译,只有一个选择:
  •        翻译1个数,指针走一步,递归调用 dfs,返回出剩余子串的翻译方法数。
package recursion;/*** @Classname JZ46把数字翻译成字符串* @Description TODO* @Date 2023/3/7 22:08* @Created by xjl*/
public class JZ46把数字翻译成字符串 {public int translateNum(int num) {char[] chars = String.valueOf(num).toCharArray();int index = 0;return next(chars, index);}/*** @description 就是可能等于的一个数或者两个字母组合一个数字* @param: chars* @param: index* @date: 2023/3/7 22:08* @return: int* @author: xjl*/private int next(char[] chars, int index) {if (index > chars.length - 1) {return 1;}int one = next(chars, index + 1);int two = 0;if (index < chars.length - 1 && ((chars[index] - '0') * 10 + (chars[index + 1] - '0') > 9 && (chars[index] - '0') * 10 + (chars[index + 1] - '0') < 26)) {two = next(chars, index + 2);}return one + two;}
}

复杂度分析:

  • 时间复杂:O(2^n)。每个节点都要遍历,栈的深度n,n是数字字符个数。
  • 空间复杂度: O(n)。栈的深度n ,n是数字字符个数。

博文参考

《leetcode》

相关文章:

剑指 Offer 46. 把数字翻译成字符串

摘要 剑指 Offer 46. 把数字翻译成字符串 一、递归算法解析 给定一个数字&#xff0c;我们按照如下规则把它翻译为字符串&#xff1a;0 翻译成 “a” &#xff0c;1 翻译成 “b”&#xff0c;……&#xff0c;11 翻译成 “l”&#xff0c;……&#xff0c;25 翻译成 “z”。…...

tar命令——归档/压缩和解压缩文件

tar命令的功能是将一个或多个文件归档成一个文件&#xff0c;同时可结合gzip、bzip2和xz等压缩命令实现文件的压缩和解压缩。 tar 命令的语法格式如下&#xff1a; tar [选项] 文件或目录 常用选项如下&#xff1a; 选项作用/含义-c建立归档文件-x从归档文件中解出文件-z通…...

Softing smartLink网关——推进过程工业数字化转型

虽然在过程工业中各工厂所投入的运营时间千差万别&#xff0c;但仍需按照新标准来进行有效控制和管理&#xff0c;而这就需要使用一种能够聚合其异构数据的数字通信架构。对此&#xff0c;Softing提供了两种网关解决方案&#xff0c;可用于将过程工业通信架构集成到现有以太网系…...

Spark的常用算子

Spark的常用算子 目录内容Spark的常用算子一、转换算子&#xff08;Transformation&#xff09;二、行动算子&#xff08;Action&#xff09;三、键值对算子&#xff08;PairRDDFunctions&#xff09;四、文件系统算子&#xff08;File System&#xff09;Spark 内置算子是指 S…...

Unity Avatar Cover System - 如何实现一个Avatar角色的智能掩体系统

文章目录简介变量说明实现动画准备动画状态机State 状态NoneStand To CoverIs CoveringCover To Stand高度适配高度检测脚部IK简介 本文介绍如何在Unity中实现一个Avatar角色的智能掩体系统&#xff0c;效果如图所示&#xff1a; 初版1.0.0代码已上传至SKFramework框架Package…...

steam/csgo搬砖项目到底真的假的?

搬砖是从国外steam市场置办游戏装备回来&#xff0c;在国内网易buff售卖&#xff0c;低买高卖&#xff0c;产生利润的一个项目。 但我真正上手后&#xff0c;才知道steam是面向全球的游戏平台&#xff0c;用户真的大的夸张&#xff01;&#xff01;市场非常巨大&#xff0c;一…...

【Python笔记20230307】

基础 编码、解码 str.encode(utf-8) # 编码 str.decode(utf-8) # 解码关键字 import keyword keyword.kwlist格式化输出 % 占位符:%s 字符串%d 整数%f 浮点数Hello, %s % world Hi, %s, you have $%d. % (Michael, 1000000) 占位符的修饰符 -左对齐 .小数点后位数 0左边补零…...

SBOM应该是软件供应链中的安全主食

当谈到软件材料清单(SBOM)时&#xff0c;通常的类比是食品包装上的成分列表&#xff0c;它让消费者知道他们将要吃的薯片中有什么。 美国机构有90天时间创建所有软件的清单 同样&#xff0c;SBOM是一个软件中组件的清单&#xff0c;在应用程序是来自多个来源的代码的集合的时…...

[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 第二章 计算机的发展及应用(学习复习笔记)

第1章 计算机系统概论 1.1 计算机系统简介 1.1.1 计算机的软硬件概念 计算机系统由“硬件”和“软件”两大部分组成。 硬件 是指计算机的实体部分&#xff0c;它由看得见摸得着的各种电子元器件&#xff0c;各类光、电、机设备的实物组成如主机、外部设备等 软件 软件看不见…...

Python的数据分析相关的框架

Python特别强大&#xff0c;也是一款可以实现可数据分析语言&#xff0c;它有很多开源的库和工具&#xff0c;可以帮助数据科学家处理和分析数据。 以下是一些常用的Python库和工具&#xff1a; NumPy&#xff1a;NumPy是一个Python库&#xff0c;用于处理大型多维数组和矩阵&…...

为什么会出现植物神经紊乱 总是检查不出来该怎么办

植物神经紊乱是一种很多人都害怕的疾病&#xff0c;你们知道是为什么吗&#xff1f; 植物神经紊乱是一种神经系统失调导致的多种症状的总称&#xff0c;这种疾病是由于社会因素所诱发的脏器功能的失调&#xff0c;是一种非常复杂的疾病。而这种疾病是可能会发生在任何年龄阶段的…...

宏任务和微任务

JavaScript 把异步任务又做了进一步的划分&#xff0c;异步任务又分为两类&#xff0c;分别是&#xff1a; ① 宏任务&#xff08;macrotask&#xff09; 异步 Ajax 请求setTimeout、setInterval文件操作其它宏任务 ② 微任务&#xff08;microtask&#xff09; Promise.then…...

使用WebSocket、SockJS、STOMP实现消息实时通讯功能

客户端 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head><title>websocket client</title><script src"http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.min.js"></script>…...

C++回顾(十一)—— 动态类型识别和抽象类

11.1 动态类识别 11.1.1 自定义类型 C中的多态根据实际的对象类型调用对应的函数 &#xff08;1&#xff09;可以在基类中定义虚函数返回具体的类型信息 &#xff08;2&#xff09;所有的派生类都必须实现类型相关的虚函数 &#xff08;3&#xff09;每个类中的类型虚函数都需…...

雷电模拟器安卓7以上+Charles抓包APP最新教程

一、工具准备&#xff1a; 证书安装工具全局代理工具下载&#xff1a; https://download.csdn.net/download/weixin_51111267/87536481 二、Charles设置 &#xff08;一&#xff09;电脑上证书安装 &#xff08;二&#xff09;安卓模拟器上系统证书安装&#xff08;RooT权限打…...

vsvode 配置sftp,连接远程linux全过程

在本地安装sftp插件&#xff0c;配置参数https://blog.csdn.net/u011119817/article/details/106630599在linux机台安装vscode-service服务https://zhuanlan.zhihu.com/p/294933020连接超时&#xff0c;将配置文件添加超时时间遇到的错误处理&#xff1a;(272条消息) 【vscode插…...

C++类转换为蓝图、打印日志、蓝图关卡、删除C++文件

蓝图宏 UCLASS(Blueprintable)//c脚本可转换为蓝图 UPROPERTY(BlueprintReadWrite)//蓝图中可创建set&#xff0c;get节点 UFUNCTION(BlueprintCallable)//可创建函数节点 UPROPERTY(BlueprintReadWrite,Category”My Variables”)//节点进行分类打印日志 UE_LOG(LogTemp, Lo…...

elasticsearch高级篇:核心概念和实现原理

1.elasticsearch核心概念1.1 索引(index)一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字来标识&#xff08;必须全部是小写字母&#…...

部署安装Nginx服务实例

其他服务&#xff1a; 搭建zabbix4.0监控服务实例 普罗米修斯监控mysql数据库实战 Linux安装MySQL数据库步骤 一. Nginx概念介绍 1.介绍Nginx程序 Nginx (engine x) 是一款开源且高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。主要特点是占用…...

云原生架构设计原则及典型技术

云原生是面向云应用设计的一种思想理念&#xff0c;充分发挥云效能的最佳实践路径&#xff0c;帮助企业构建弹性可靠、松耦合、易管理可观测的应用系统&#xff0c;提升交付效率&#xff0c;降低运维复杂度。代表技术包括不可变基础设施、服务网格、声明式 API 及 Serverless 等…...

SAM-Audio多模态音频分离技术全解析:从原理到实践应用

SAM-Audio多模态音频分离技术全解析&#xff1a;从原理到实践应用 【免费下载链接】sam-audio The repository provides code for running inference with the Meta Segment Anything Audio Model (SAM-Audio), links for downloading the trained model checkpoints, and exam…...

Kronos金融预测模型:当AI学会“阅读“K线语言

Kronos金融预测模型&#xff1a;当AI学会"阅读"K线语言 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 想象一下&#xff0c;当你面对上千只股票…...

Python 3.14 JIT编译器深度调优实战(官方未公开的profile-driven优化链)

第一章&#xff1a;Python 3.14 JIT编译器演进与调优全景概览Python 3.14 引入了实验性但高度可配置的内置 JIT 编译器&#xff08;代号“Torchlight”&#xff09;&#xff0c;标志着 CPython 首次在标准发行版中集成生产就绪的即时编译能力。该 JIT 并非替代解释器&#xff0…...

模型轻量化前沿:OpenClaw集成百川2-13B-4bits量化版的技术解析

模型轻量化前沿&#xff1a;OpenClaw集成百川2-13B-4bits量化版的技术解析 1. 为什么我们需要量化模型&#xff1f; 当我第一次尝试在本地部署百川2-13B模型时&#xff0c;16GB显存的显卡直接被"撑爆"。这让我意识到&#xff0c;想要在消费级硬件上运行大模型&…...

CUDA知识汇总2——cuFFT

cuFFT作为CUDA最基础的库之一&#xff0c;是NVIDIA提供的GPU加速的Fourier变换FFT库&#xff0c;能极大提升涉及FFT计算的科学计算、信号处理和深度学习等任务的速度。一、傅里叶变换和快速傅里叶变换​ Fourier变换是数字信号处理领域一个很重要的数学变换&#xff0c;它用来实…...

STM32摔倒报警系统设计与多传感器融合技术

基于STM32的摔倒报警系统设计与实现1. 项目概述1.1 系统架构本系统采用STM32F103RCT6作为主控芯片&#xff0c;构建了一套完整的老年人摔倒检测与报警解决方案。系统硬件架构包含以下核心模块&#xff1a;传感器层&#xff1a;MPU6050姿态传感器、MAX30102心率血氧传感器、MLX9…...

Lightpanda:解决现代Web自动化性能瓶颈的创新方案

Lightpanda&#xff1a;解决现代Web自动化性能瓶颈的创新方案 【免费下载链接】browser The open-source browser made for headless usage 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser 在动态网页内容成为主流的今天&#xff0c;传统无头浏览器面…...

别再只用普通卷积了!门控卷积(GConv)在AEC和语音合成中的实战调优心得

门控卷积实战指南&#xff1a;从音频降噪到语音合成的深度优化策略 当我在处理一个实时语音增强项目时&#xff0c;第一次尝试用门控卷积替换标准卷积层&#xff0c;结果模型在测试集上的信噪比提升了2.3dB——这个意外的突破让我意识到&#xff0c;大多数工程师可能只发挥了门…...

2026最权威一键生成论文工具榜单:这些被高校和导师悄悄推荐的软件你还没用?

一键生成论文工具已成为提升学术效率的重要助力。依托权威检测平台数据、高校师生实测反馈及用户真实评价&#xff0c;这些工具在合规性、专业性与实用性上不断突破。本文基于多维度测评&#xff0c;为您盘点2026年最受认可的AI论文写作软件&#xff0c;助你轻松应对各类论文需…...

Halcon实战:用Smallest_rectangle2算子精准定位农产品尺寸(附完整代码)

Halcon实战&#xff1a;用Smallest_rectangle2算子精准定位农产品尺寸&#xff08;附完整代码&#xff09; 在农业自动化分选线上&#xff0c;一颗大蒜的尺寸偏差可能直接影响出口等级评定。传统人工抽检不仅效率低下&#xff0c;面对每小时数吨的吞吐量时&#xff0c;误差率往…...