91.解码方法

摘要:
=1&&arrInt[i-1]!=2) 返回0;否则{tmp=num1;}}否则{if(arrInt[i-1]==1){tmp=num1+num2;}如果(arrInt[i-1]==2&&arrInt[i]˂=6){tmp=num1+num2;}}num1=num2;num2=tmp;}returntmp;}

题目:

https://leetcode-cn.com/problems/decode-ways/

解码方法

  1. 例子:121013271

  2. 状态方程

(1) 如果S[i] == 0

① 如果(S[i-1] ==1 || S[i-1] ==2)dp[i]=dp[i-2]

“110”->”1,2,1”

② 否则返回0

(2) 如果(S[i-1]==2) &&(s[i] <=6),dp[i]=dp[i-1]+dp[i-2]

(3) 如果S[i-1] == 1无论S[i]是多少,dp[i]=dp[i-1]+dp[i-2]

    3. 边界

(1) Dp[0]=1,dp[-1]=1

  4. 程序

public static int numDecodings(String s) {
       if(s.length() == 0 || s == null || s.charAt(0)=='0'){
            return 0;
        }
        char[] arr = s.toCharArray();
        int[] arrInt = new int[arr.length];
        for(int i = 0 ; i < arr.length ; i ++){
            arrInt[i] = arr[i] - '1' + 1;
        }
        int num1 = 1,num2 = 1;
        int tmp = 1;
        for(int i = 1 ;i < arrInt.length ; i ++){
            tmp = num2;
            if(arrInt[i] == 0){
                if( arrInt[i-1] != 1 && arrInt[i-1]!=2)
                    return 0;
                else{
                    tmp = num1;
                }
            }else{
                if(arrInt[i-1]==1){
                    tmp = num1 + num2;
                }
                if(arrInt[i-1]==2 && arrInt[i] <= 6){
                    tmp = num1 + num2;
                }
            }

            num1=num2;
            num2 = tmp;
        }
        return tmp;

    }

免责声明:文章转载自《91.解码方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Console对象详解,输出js程序英语发音规则---F字母下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Jumpserver-堡垒机

管理用户是资产的根用户,或具有NOPASSWD:ALLsudo权限的用户。Jumpserver使用此用户推送系统用户并获取资产硬件信息。使用Web终端连接到服务器后,我查看当前用户,显示为Jumpserver。下面是一个通过单击Docker直接安装koko的命令。当系统用户创建时,如果选择了自动推送,Jumpserver将使用...

react 中echarts-for-react使用 自适应div

import*asReactfrom'react'importReactEchartsfrom'charts-for-ract'导出接口IProps{}接口IState{}classCapitalBudgetsextendsReact.Component<IProps,IState>{constructor(props:IProps){super(props...

nginx配置跨域(CORS)、防盗链(valid_referers)、缓存(expires)、压缩(gzip)

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服AJAX只能同源使用的限制。服务器根据这个值,在许可范围内,则在头信息包含Access-Control-Allow-Origin。...

微信小程序通过background-image设置背景图片

微信小程序通过背景图像设置背景:仅支持在线图像和base64图像,不支持本地图像;设置base64图像的步骤如下:1.在网站上http://imgbase64.duoshitong.com/将图片转换为base64格式2的文本。在WXSS中使用上述文本:background image:url(“data:image/png;base64,iVBORw0KG...

dbeaver 驱动安装

一、背景:在Windows10安装dbeaver数据库连接工具,点“测试连接”的时候出现报错如下:ErrorresolvingdependenciesMavenartifact'maven:/mysql:mysql-connector-java:RELEASE'nofound经网上查询是dbeaver驱动无法下载的问题。二、解决方法:打开“窗口”-˃“首选项...

matlab中figure 创建图窗窗口

示例figure将f指定的图窗作为当前图窗,并将其显示在其他所有图窗的上面。figure;同时使用多个图窗创建两个图窗,然后创建一个线图。f1=figure;f2=figure;plot;将当前图窗设置为f1,使其成为下一个绘图的目标。figure;scatter;输入参数全部折叠f-目标图窗Figure对象目标图窗,指定为Figure对象。默认情况下,Nu...