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

力扣_字符串5—解码方法

题目

一条包含字母 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” 在映射中并不等价。

给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。

方法

  • 动态规划
    • 定义 d p dp dp 数组, d p [ i ] dp[i] dp[i] 表示字符串 s [ 0 − i ] s[0-i] s[0i] 的解码方法数
    • 状态转移
      • 若使用 s [ i ] s[i] s[i] 解码,则 d p [ i ] = d p [ i − 1 ] dp[i]=dp[i-1] dp[i]=dp[i1]
      • 若使用 s [ i ] s[i] s[i] s [ i − 1 ] s[i-1] s[i1] 解码,则 d p [ i ] = d p [ i − 2 ] dp[i]=dp[i-2] dp[i]=dp[i2]
      • 若以上两种方法都可以,则 d p [ i ] = d p [ i − 1 ] + d p [ i − 2 ] dp[i]=dp[i-1]+dp[i-2] dp[i]=dp[i1]+dp[i2]

代码

class Solution {
public:
    int numDecodings(string s) {
        int n = s.size();
        vector<int> dp(n);
        if(s[0] != '0')
            dp[0] = 1;
        for(int i = 1; i < n; i++){
            if(s[i] != '0')
                dp[i] += dp[i-1];
            if((int(s[i-1]-'0')*10 + int(s[i]-'0')) <= 26 && s[i-1] != '0')
                if(i > 1)
                    dp[i] += dp[i-2];
                else
                    dp[i] += 1;
        }
        return dp[n-1];
    }
};

http://www.kler.cn/news/234627.html

相关文章:

  • 吹响AI PC号角!微软在Windows中不断增加“Copilot含量”
  • 【Spring学习】Spring Data Redis:RedisTemplate、Repository、Cache注解
  • Java字符串(包含字母和数字)通用排序
  • 【MySQL】-15 MySQL综合-1(数据库概念+数据库涉及技术)
  • 【数据结构】13:表达式转换(中缀表达式转成后缀表达式)
  • 【Java】悲观锁和乐观锁有什么区别?
  • 【java】笔记10:类与对象——本章练习
  • Leetcode 3033. Modify the Matrix
  • Spring + Tomcat项目中nacos配置中文乱码问题解决
  • 代码随想录算法训练营第39天(动态规划02● 62.不同路径 ● 63. 不同路径 II
  • 第二节 zookeeper基础应用与实战
  • 知识价值2-什么是IDE?新手用哪个IDE比较好?
  • python:lxml 读目录.txt文件,用 xmltodict 转换为json数据,生成jstree所需的文件
  • 寒假作业5
  • 基于python和matlab的复杂函数拟合的方法、工具以及学习资料
  • 【中间件学习】什么是中间件
  • 【Linux进程间通信】用管道实现简单的进程池、命名管道
  • [AIGC] Tomcat:一个简单 and 高效的 Java Web 服务器
  • 【设计模式】23中设计模式笔记
  • Hadoop:认识MapReduce
  • 【数据结构和算法】--- 基于c语言排序算法的实现(2)
  • Rust变量与常量介绍
  • vue-生命周期+工程化开发(三)
  • RCS系统之:机器人状态
  • 快速搭建 nfs 环境, 解决 nfs 搭建时的疑难杂症
  • C++STL速查手册
  • [NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_sql解析
  • 为什么IDM下载速度很慢,IDM下载速度很慢怎么办
  • FL Studio如何改变轨道颜色 FL Studio波形颜色如何自定义 flstudio21中文版下载 FL Studio 设置颜色
  • MySQL数据库-MVCC多版本并发控制