LeetCode 第91题:解码方法

题目描述:

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

1-A

......

26-Z

要特别注意,11106可以映射为AAJF或KJF

06不是一个合法编码

给你一个只含数字的非空字符串s,请计算并返回解码方法的总数。如果没有合法的方法解码整个字符串,返回0

示例1:

cs 复制代码
输入:s = "12"
输出:2
解释:它可以解码为 "AB"(1 2)或者 "L"(12)。

示例2:

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

示例3:

cs 复制代码
输入:s = "06"
输出:0
解释:"06" 无法映射到 "F" ,因为存在前导零("6" 和 "06" 并不等价)。

提示:

cs 复制代码
1 <= s.length <= 100
s 只包含数字,并且可能包含前导零。

解题方法:

动态规划,分为一个字符和两个字符两种情况

cs 复制代码
int numDecodings(char* s) {
    int n = strlen(s);
    int f[n+1];
    memset(f,0,sizeof(f));//f数组全部设置为0
    f[0]=1;
    for(int i=1;i<=n;i++)
    {
        //一种字符情况
        if(s[i-1]!='0')  f[i] = f[i] + f[i-1];
        //两种字符情况
        if(i>1 && s[i-2]!='0' && (s[i-2]-'0')*10+s[i-1]-'0'<=26)//以226为例好理解点
        f[i] = f[i]+f[i-2];

    }
        return f[n];
}
相关推荐
H_z_q24011 天前
RHCE的时间服务器与NTP、chrony
java·运维·服务器
oMcLin1 天前
如何在Ubuntu 20.04上配置并调优Kubernetes集群,确保在多租户环境下的高可用性与资源分配?
linux·ubuntu·kubernetes
python开发笔记1 天前
can(6) canopen python库使用
服务器·网络·python
cc_beolus1 天前
服务器介绍
运维·服务器
石头5301 天前
Service 详解
linux
小鸡脚来咯1 天前
Linux 服务器问题排查指南(面试标准回答)
linux·服务器·面试
末日汐1 天前
磁盘与文件系统
linux·运维·数据库
夏沫mds1 天前
基于hyperledger fabric的葡萄酒溯源系统
运维·fabric
水天需0101 天前
Linux PS4 环境变量详解
linux
小新ya1 天前
vscode增删改查文件,一直等待中...
linux·vscode