博客
关于我
字符串解码--动态规划
阅读量: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/

你可能感兴趣的文章
GDB命令—jump/return/call/disassemble
查看>>
java基础--继承
查看>>
fastjson 反序列化源码解析
查看>>
按位与、或、非、异或总结
查看>>
TCP心跳检测包
查看>>
01 背包问题
查看>>
JVM - 参数配置影响线程数
查看>>
在 springboot 项目中全局处理异常
查看>>
ILI9341几个重要的命令
查看>>
AD如何对原理图进行注释
查看>>
NC15136: 迷宫
查看>>
动态点击a标签
查看>>
oracle创建序列语法
查看>>
springboot通过控制层跳转页面404
查看>>
idea2020 没有 tomcat server
查看>>
jq动态修改元素的onclick属性的值
查看>>
为什么讨厌所谓仿生AI的说法
查看>>
Fatal NI connect error 12547, connecting to: (LOCAL=NO)
查看>>
ORACLE 客户端工具
查看>>
Elasticsearch下载慢?分享百度云下载-ELK
查看>>