博客
关于我
字符串解码--动态规划
阅读量:317 次
发布时间:2019-03-04

本文共 1087 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

class Solution {       public int numDecodings(String s) {           /*        动态规划:        我们解密字符串的方式        前i个指的是 0 到 i-1          设总共有i个字符  s的前i个字符的解密方式有:最后一个字符为下表i-1        1.最后一个字符进行解密方式 + 前i-1个字符进行解密的和(0到 i-2)  前提下标i-1的字符可以正常解密        2.最后两个字符进行解密    + 前i-2个字符进行解密的和(0到i-3)     前提下标i-1 和下表 i-2 拼起来的字符可以正常解密                因为这种计算的时候第 i-1 或者 第i-2 个的字符已经确定了解密方式        所以我们前i个字符的解密方式 = 前i-1个字符串的解密方式  +  前i-2个字符串的解密方式 的 和        序列型 我们考虑前多少。。。        初始条件 f[0] = 1; 含义是 空串只有一种解密方式 就是空        */        char[] chars = s.toCharArray();        int n = chars.length;        if(n ==0 ) return 0 ;        int f[] = new int[n+1];        f[0] = 1;        for(int i = 1 ; i <= n ; i++){               f[i] = 0 ;            int temp  = chars[i-1] - '0' ;            if(temp >0 && temp <= 9){     //看最后一个字符能否凑成一个解密                f[i]+=f[i-1];            }            if(i>=2){     //看最后两个字符能够凑成一个解密                temp = (chars[i-2]-'0')*10 + chars[i-1] - '0' ;            }            if(temp >=10 && temp <=26){                   f[i]+=f[i-2];            }        }        return f[n];    }}

转载地址:http://xeeq.baihongyu.com/

你可能感兴趣的文章
Linux的软链接跟Windows快捷方式一样?
查看>>
更改github的默认语言类型
查看>>
使用bigdecima实例化时传int和string时的精度丢失
查看>>
使用第三方sdk,微信wechat扫码登录
查看>>
windows下的netstat命令略解和linux下的netstat命令/awk打印或分割字符串
查看>>
mysql中的行转列
查看>>
java8中的闭包Function/BiFunction
查看>>
flink —— checkpoint机制
查看>>
shell脚本中冒泡排序、直接排序、反转排序
查看>>
WPS及Excel中Alt键的妙用 快捷键
查看>>
C - 食物链 并查集
查看>>
Pycharm 常用快捷键
查看>>
ValueError: check_hostname requires server_hostname
查看>>
基于Altium Designer的电子设计的入门指南
查看>>
基于LabVIEW的入门指南
查看>>
PCB布局系列汇总
查看>>
电阻入门知识
查看>>
电容入门知识
查看>>
C++面向对象
查看>>
正则表达式教程
查看>>