【力扣刷题】解码方法

【力扣刷题】解码方法😎

😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

前言🙌

哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘 都是精华内容,可不要错过哟!!!😍😍😍

91. 解码方法

题目链接: 解码方法

解题思路:

  • 本题采用的是动态规划的解法。首先构建根据状态表示构建一个dp数组,为了防止越界需要对dp【0】,dp【1】做初始化。根据状态表示和题目要求得出状态方程,最后将结果返回即可
  • 该解法的时间复杂度O(n),空间复杂度为O(n)。

解题源码分享:

cpp 复制代码
class Solution {
public:
    int numDecodings(string s) 
    {
        // //1.创建dp【】
        // int len = s.size();
        // vector<int> dp(len);//dp[i]:已i位置为结尾时,解码的总数
        // //初始化
        // dp[0] = s[0] != '0';
        // if(len == 1) return dp[0];
        // int t = (s[0] - '0') * 10 + s[1] - '0';
        // if(t >= 10 && t <= 26) dp[1] += 1;//两个结合编码成功
        // if(s[0] != '0' && s[1] != '0') dp[1] += 1;//单独编码成功

        // for(int i = 2; i < len; i++)
        // {
        //     //单独编码成功
        //     if(s[i] != '0') dp[i] += dp[i - 1];
        //     int t = (s[i - 1] - '0') * 10 + s[i] - '0';
        //     if(t >= 10 && t <= 26) dp[i] += dp[i - 2];//两个结合编码成功
        // }
        // return dp[len - 1];
        //1.创建dp【】
        int len = s.size();
        vector<int> dp(len + 1);//dp[i]:已i位置为结尾时,解码的总数
        //初始化
        dp[0] = 1;
        dp[1] = s[0] != '0' ;
        if(len == 1) return dp[1];
        for(int i = 2; i <= len; i++)
        {
            //单独编码成功
            if(s[i - 1] != '0') dp[i] += dp[i - 1];
            int t = (s[i - 2] - '0') * 10 + s[i - 1] - '0';
            if(t >= 10 && t <= 26) dp[i] += dp[i - 2];//两个结合编码成功
        }
        return dp[len];
    }
};

运行结果截图:

总结撒花💞

希望大家通过阅读此文有所收获!

😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关推荐
独行soc8 小时前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
XuanRanDev11 小时前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
鹏大师运维17 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
亦枫Leonlew18 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象18 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
一个通信老学姐1 天前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
力姆泰克1 天前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克1 天前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬1 天前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
转世成为计算机大神1 天前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节