91. 解码方法【字符串解码总数】

 

分析:截取字符串前缀字串,当前字符串可以解码的总数取决于最后一个字符是单独解码还是和前一个字符一起解码

  • 如果当前字符单独解码,要求当前字符不为0
  • 如果当前字符和前一个字符一起解码,要求前一个字符不能是0,并且加起来得到的数不能超过26
  • 最后一个字符两种情况的值加起来就是最终的解码种数
复制代码
 1 class Solution {
 2     public int numDecodings(String s) {
 3         int len = s.length();
 4         int[] dp = new int[len+1];
 5         dp[0] = 1;
 6         for(int i=1;i<=len;i++){
 7             // 单独字符
 8             if(s.charAt(i-1) != '0'){
 9                 dp[i] = dp[i-1];
10             }
11             // 双字符
12             if(i>1 && s.charAt(i-2) != '0' && (s.charAt(i-2)-'0')*10 + (s.charAt(i-1)-'0') <= 26){
13                 dp[i] += dp[i-2]; 
14             }
15         }
16         return dp[len];
17     }
18 }
复制代码

 

posted @   yky_xukai的胡思乱想  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示