每日算法 - 解码方法

常见的加密、解密 加密与解密 一.Base编码系列 1.Base16 Base16编码使用16个ASCII可打印字符(数字0-9和字母A-F)对任意字节数据进行编码。 注: Base16不可能用到填充符号“=”。 2.Base32 Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。 ... 阅读详情

目录

题目

解题思路

代码


题目

一条包含字母 A-Z 的消息通过以下方式进行了编码:

'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个只包含数字的非空字符串,请计算解码方法的总数。

示例 1:

输入: "12"
输出: 2
解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。
示例 2:

输入: "226"
输出: 3
解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/decode-ways
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 


解题思路

动态规划,dp

 


代码

/**
 * 字母解码数字方法
 *
 */

public class NumberDecodingSolution {
    public static void main(String[] args) {
        String s = "1110";
        System.out.println(numberDecodings(s));
    }

    public static int numberDecodings(String s){
        int len = s.length();
        if (len == 0 || s.charAt(0) == '0') return 0;
        // res[i] 表示第i位结束的字符串有的解码方式总数
        int res[] = new int[len];
        res[0] = 1;

        // dp
        for (int i = 1; i < len; i++) {
            int current = Integer.valueOf(String.valueOf(s.charAt(i-1))) * 10 + Integer.valueOf(String.valueOf(s.charAt(i)));
            int currentLocation = Integer.valueOf(String.valueOf(s.charAt(i)));

            // 0
            if (currentLocation == 0){
                // 只能和前面的一起翻译
                if(i >= 2 && (current / 10 == 1  || current / 10 == 2 )){
                    // 能和前面的一起翻译
                    res[i] = res[i-2];
                }else if(i == 1 && (current / 10 == 1  || current / 10 == 2 )){
                    // 能和前面的一起翻译
                    res[i] = res[i-1];
                }else {
                    // 不能和前面一起翻译
                    res[i] = 0;
                }
            }else{
                // 不为0
                if (current <= 26 && current >= 11){
                    // 和前一位组成的数字属于[11,26],能单独翻译也能和前一位一起翻译,res = 单独翻译 + 一起翻译
                    int temp = i == 1?1:res[i-2];
                    res[i] = res[i-1] + temp;
                }else if(current <= 9 && current >= 1){
                    // 属于[1,9],只能单独翻译
                    res[i] = res[i-1];
                }else if(current >= 27){
                    // 属于[27,...],
                    res[i] = res[i-1];
                }
            }
        }
        return res[len-1];
    }
}

 

LeetCode Hot 100 Python (71~80) LeetCode Hot 100 第71~80题的Python实现 阅读详情

相关推荐

遗传算法编码方式的应用及其改进算法的研究

遗传算法编码方式的应用及其改进算法的研究

leetcode-91解码方法(动态规划|记忆化搜索)

一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“111” 可以将 “1” 中的每个 “1” 映射为 “A” ,从而得到 “AAA” ,或者可以将 “11” 和 “1”(分别为 “K” 和 “A” )映射为 “KA” 。注意,“06” 不能映射为 “F” ,因为 “6” 和 “06” 不同。 给你一个只含数字的 非空 字符串

m0_46656833的博客 205

基于MOS的防反接电路

防反接电路一般用于电源入口处,在电源反接时,保证电源入口之后的电路不会受到损害。一般在电源电流较小、对1V左右的压降不敏感时可以使用二极管进行防反接。防反接的形式有直接在正极串联二极管(如图1),或使用整流桥的方式(如图2),但这两种方式均存在:1、存在二极管的管压降;2、过大电流时,二极管消耗的功率大,发热严重。这两个问题。 图 1 二极管防反接电路 图 2 整流管防反接电路 1、基于NMO...

qq_42682826的博客 2万+

动态规划:解码方式

    给定一个数字字符串,其中的数字是按以下编码方式的结果。求对给字符串进行解码时,有多少种解码方式。如对于编码“12”,可以解码成“AB”(“1”,“2”)或“L”(“12”)。    分析:把解码的结果分为两部分:最后一个数为个位数和最后一个数为十位数。如果以个位数结尾,解码下一个数字的时候,有可能可以有两种方式:下一个数字单独作为一个值,或者与前面的数字合并组成一个十位数(前提是 10&l...

Peanut 大本营 705

OFDM时频脉冲形状与子载波正交性的理解

从多载波调制的角度来理解子载波间正交,首先要明确OFDM默认的脉冲成型是时域矩形窗,时域上每个子载波 ej2πfnte^{j2πf_nt}ej2πfn​t 都被一个矩形窗脉冲gT(t)g_T(t)gT​(t)成型。其次,OFDM子载波间隔 等于 OFDM符号周期的倒数,这是子载波正交的条件。 ​ 根据时频脉冲形状,可以从时域上理解如左图(注意是矩形脉冲 乘 复指数),从频域上理解如右图(sinc脉冲 卷 频点)。 ​

weixin_43803202的博客 2214

COMSOL网格划分技巧总结

在对马赫曾德尔型光学传感器进行模拟仿真时,在采用自动物理场自动控制网格-极细化的情况下透射谱曲线仍不理想,因此需要手动划分网格来对其进行更精细的剖分。 手动划分的基本原则是在作用边界,热点,曲边处做细致划分, 基底,包层等做粗略划分。对于光波导型的微纳结构,在仿真时一般需要用到创建边界层网格。 1.COMSOL所需要的网格数量 网格单元数越多,结果精细度越高,计算所需内存越多。在细化到一定程度后网格收敛,仿真结果提升不明显。 2.网格剖分类型 ...

qq_42453337的博客 4万+

CH1-语言模型和解码算法

本文是cs224n关于nlg系列课程第一课,主要介绍了NLG相关背景、相关的语言模型和几种比较常见的解码算法。 简单介绍了greedy search、beam search、sample几种解码算法。

听了个听儿 1143

ASTRA Toolbox学习笔记-Python

ASTRA Toolbox 是一个用于处理 X 射线相干散射和 X 射线传输成像的开源算法工具箱。本文档概述了该工具箱的基本概念。

hou9021的博客 8261

base64编码和解码算法

目录一、概述二、原理三、算法源码四、TK版源码 Base64编码是一种基于64个可打印字符来表示二进制数据的方法。目前Base64已经成为网络上常见的传输8位二进制字节代码的编码方式之一。   为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做

指尖魔法师 4038

Windows沙盒神器Sandboxie Plus保姆级教程:从安装到实战测试可疑软件

本文详细介绍了Windows沙盒神器Sandboxie Plus的安装、配置与实战应用,帮助用户安全测试可疑软件。从系统要求、安装步骤到核心功能如多沙盒管理、文件共享和快照恢复,全面解析了这款轻量级沙盒工具的优势与使用技巧,特别适合需要隔离运行未知程序的用户。

weixin_29323049的博客 1154

实用指南:制作通用的INCA和CANape兼容A2L文件

A2L(ASAM MCD-2 Measurement and Calibration Data)文件是描述ECU(电子控制单元)测量和校准数据的标准文件格式。在标定工作中,A2L文件扮演着极为重要的角色,它定义了测量通道、校准参数等关键信息,为工程师提供了统一的描述方式。INCA和CANape是两种常见的汽车电子系统标定工具,分别由ETAS和Vector公司开发。它们在汽车电子系统的开发和调试过程中发挥着重要作用,提供了丰富的标定功能和用户友好的界面。

一直在水些技术小文 2923

解码方法(Java算法每日一题)

问:问 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为: “AAJF” ,将消息分组为 (1 1 10 6) “KJF” ,将消息分组为 (11 10 6) 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。 给你一

wanjialin的博客 292

rk3576 适配摄像头 (mipi 五摄)

在RK3576上实现五路CSI摄像头方案,核心思路是充分复用其视频输入接口,并通过巧妙的软件配置来实现。

weixin_35723192的博客 178

『LeetCode|每日一题』---->解码方法

一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> "1" 'B' -> "2" ... 'Z' -> "26",要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。 注意,消息不能分组为 (1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "6" 和 "06" 在映射中并不等价。 给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。 题目数据保证答案肯定是一个 32 位 的整数。...

weixin_51065489的博客 654

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

通过本教程,我们完整地学习了如何使用YOLO11-pose进行关键点检测任务的训练。从数据标注、格式转换到模型训练和评估,每个步骤都提供了详细的代码和说明。更高的精度:随着算法改进,关键点检测的精度将进一步提高实时性能:模型优化将使实时高性能关键点检测成为可能多模态融合:结合深度信息、热成像等多模态数据提升检测能力领域自适应:模型能够更好地适应不同场景和领域希望本教程能够帮助你在自己的项目中成功应用YOLO11-pose进行关键点检测。如果你有任何问题或建议,欢迎在评论区留言讨论!

QQ_778132974的博客 739

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

20. 有效的括号,394.字符串解码,739.每日温度,84. 柱状图中最大的矩形

Code。

weixin_59234335的博客 802

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C/C++每日一练(20230319) 反转链表II、解码方法、擅长编码的小k

1. 反转链表 II🌟🌟   2. 解码方法🌟🌟   3. 擅长编码的小k🌟🌟🌟

汉阳Hann's Home 2956

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

每日算法:动态规划(解码方法、不同二叉搜索树、三角形最短路径之和、买股票的最佳时机)第二天打卡

题目一:解码方法 一条包含字母A-Z的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。 示例2: 输入: "226" 输出: 3 解释: 它可以解码为...

Zystem 196

力扣hot100 | 栈 | 20. 有效的括号、155. 最小栈、394. 字符串解码、739. 每日温度、84. 柱状图中最大的矩形

给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([])”输出:true示例 5:输入:s = “([)]”输出:false。

m0_56231308的博客 885

LeetCode每日一题解析:算法思维与面试技巧

算法是计算机科学的核心基础,通过系统性的问题求解训练可以显著提升开发者的工程能力。从哈希表、二叉树到动态规划,常见数据结构与算法的掌握程度直接影响代码效率和质量。LeetCode平台上的每日一题系列,特别适合用于构建算法知识体系,其中动态规划和二分查找等高频考点,在大厂面试中出现概率超过70%。通过分析2026年1月5日至11日的题目集合,可以学习到如何将基础算法应用于字符串处理、图论等实际场景,这种模式化训练对求职准备和日常开发都有重要价值。

weixin_30325487的博客 341

#leetcode#

/ 调用getString方法,将临时链表中的字符拼接成原始子串(如 ["b","c"] -> "bc")* 例如:s="123[a]", ptr初始指向'1',调用后返回"123",且ptr移动到'['的位置。// 循环repTime次,将子串拼接成重复后的字符串(如 "bc" 重复2次 -> "bcbc")// 反转临时链表,恢复子串的正确顺序(比如弹出顺序是 "c","b",反转后是 "b","c")* 例如:链表 ["a","aa","bcbc"] -> "aaabcbc"

wnaan的博客 437

【算法】leetcode100 堆、栈

方法一:暴力解法,遍历每个元素,依次以该元素为中心,向左右两边遍历,找小于该元素的左右边界。方法一:直接插入排序的方法进行排序,但是每次插入是O(k)的复杂度,k是现有节点数。时间复杂度O(n),空间复杂度O(1)。方法二:两个堆排序,大根堆存放小于等于中位数的值,小根堆存放大于中位数的值。时间复杂度:每次插入O(logk),k是现有结点数。空间复杂度O(k)。时间复杂度:O(n),空间复杂度:O(n)。top操作:获取 stack栈顶。getMin操作:获取min栈顶。方法二:栈,左、右边界的下标数组。

2401_86272648的博客 1124

Leetcode—91. 解码方法【中等】

运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

Atticus的博客 641

leetcode hot100 栈

连续的升温时res[idx] = 1, 降温时连续的数字入栈, 直到某一温度>栈顶索引的温度, 栈顶出栈, 栈顶索引res 相应计算, while循环保持判断该温度与栈顶温度直至结束。与栈相关, 所以一直在想存入取出的问题, 如果要存取, 那么本体一定是与数字大小相关, 故而判断入栈条件可以是temps[cur]>temp[pre]如果为 ’ ] ’ , 将括号中的字符串重复数字栈顶遍, 之后作为获取括号前的字符串即字符栈顶的字符串, 拼接成为新的字符串。单调增栈–栈存储索引, 保证栈内递增。

weixin_74191696的博客 1089

hot100 | 十二、栈

注意:×。

LMEdward的博客 303

【leetcode100-069到073】【栈】五题合集

第二题的逻辑和第一题相同,只是评判条件和第一题相反,因为要找的是第一个小于当前元素的,找到它就找到了当前矩形的右边界,而栈内元素是递增的,左边界就是栈顶元素下面的元素(其实不一定,可能会有非严格递增的情况,也就是栈顶和它下面的元素一样大,但因为本题找的是最大值,这样做对结果不会有影响,所以就不单独拿出来讨论了)。对第一题来说,要找的是比自身大的,因此在遍历时,遇到小的先存起来,只有当前元素比栈顶下标元素大时,才开始弹出栈内下标,直到栈内没有比当前元素更大的数时停止,并把当前元素入栈。,判断字符串是否有效。

weixin_63059689的博客 1078
上一篇: Spring - AoP
下一篇: 每日算法 - 组合(数学公式 -------- c(n,k))
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值