LeetCode刷题-91. 解码方法
题目链接:91. 解码方法
¶题解:
简单的动态规划题!
¶题目简述:
将A ~ Z
编码为 1 ~ 26
,给定一个数字字符串求共有多少种解码方式!
¶题解:
动态规划:
状态表示: f[i]
表示前i
个字符的解码方法数
**状态计算:**考虑最后一步
- 最后一位不为
0
时,解码数为f[i - 1]
- 最后两位为
10 ~ 26
时,解码数为f[i - 2]
综上所述,状态转移方程为: f[i] = f[i - 1] + f[i - 2]
最终结果: f[n]
初始转态: f[0] = 1
,初始转态为0还是1由是否能满足所有状态的正确性决定,由于f[1] = s[1] != '0' ? 1: 0;
,所以f[0] = 1
!
时间复杂度:O(n)
注意:
- 为了使得处理边界简单,将字符串前面加空格处理!
¶AC代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论