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 @ 2022-07-11 21:29  yky_xukai的胡思乱想  阅读(74)  评论(0)    收藏  举报