当前位置: 首页 > 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》

http://www.lryc.cn/news/33182.html

相关文章:

  • tar命令——归档/压缩和解压缩文件
  • Softing smartLink网关——推进过程工业数字化转型
  • Spark的常用算子
  • Unity Avatar Cover System - 如何实现一个Avatar角色的智能掩体系统
  • steam/csgo搬砖项目到底真的假的?
  • 【Python笔记20230307】
  • SBOM应该是软件供应链中的安全主食
  • [计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 第二章 计算机的发展及应用(学习复习笔记)
  • Python的数据分析相关的框架
  • 为什么会出现植物神经紊乱 总是检查不出来该怎么办
  • 宏任务和微任务
  • 使用WebSocket、SockJS、STOMP实现消息实时通讯功能
  • C++回顾(十一)—— 动态类型识别和抽象类
  • 雷电模拟器安卓7以上+Charles抓包APP最新教程
  • vsvode 配置sftp,连接远程linux全过程
  • C++类转换为蓝图、打印日志、蓝图关卡、删除C++文件
  • elasticsearch高级篇:核心概念和实现原理
  • 部署安装Nginx服务实例
  • 云原生架构设计原则及典型技术
  • 【Linux】-- 工具介绍 vim_gcc/g++_gdb
  • JAVA SE: IO流
  • 打破原来软件开发模式的无代码开发平台
  • 06-redux中的hook
  • watch监听不到数组对象的变化
  • 言语理解与表达之语句表达
  • 2023年全国最新食品安全管理员精选真题及答案14
  • 【MySQL】约束
  • C语言学习(三)
  • TOUGH系列软件建模及在地下水、CO2地质封存、水文地球化学、地热等多相多组分系统多过程耦合
  • k8s学习之路 | k8s 工作负载 ReplicaSet