首页 > 其他分享 >91. 解码方法

91. 解码方法

时间:2024-12-24 16:31:51浏览次数:4  
标签:index return int 解码 ans 91 方法 dp

  1. 题目链接

  2. 解题思路:动态规划:从左往右的尝试模型,来到index位置,只解码index一个数,或者解码index和index+1两个数

  3. 代码

    class Solution:
    
        # 只需要解码s[index...]即可
        def process(self, s: str, index: int, dp: List[int]) -> int:
            if index == len(s):   # 找到了一种有效解
                return 1 
            if s[index] == '0':   # 不是一种有效解
                return 0
            if dp[index] != -1:
                return dp[index]
            ans = 0
            # 单独一个数解码
            ans += self.process(s, index + 1, dp)
            # 两个数解码
            if index + 1 < len(s) and (int(s[index]) * 10 + int(s[index + 1])) <= 26:
                ans += self.process(s, index + 2, dp)
            dp[index] = ans
            return ans
        
        def numDecodings(self, s: str) -> int:
            n = len(s)
            dp = [-1 for _ in range(n)]
            ans = self.process(s, 0, dp)
            
            return ans
    

标签:index,return,int,解码,ans,91,方法,dp
From: https://www.cnblogs.com/ouyangxx/p/18628015

相关文章

  • 【C++boost::asio网络编程】有关服务端退出方法的笔记
    有关服务端退出方法的笔记C风格的信号关闭boost::asio中的关闭方式原来服务端的main函数如下intmain(){ try { boost::asio::io_contextioc; Servers(ioc,8888); ioc.run(); } catch(conststd::exception&) { } return0;}  上面弊端在......
  • vue中全局使用的方法或者常量,可以挂载到window上面吗?
    在Vue.js应用中,将全局方法或常量挂载到window对象上是一种实现全局访问的方式,但这种方法并不是最佳实践。虽然它确实可以让任何地方都能访问这些方法或常量,但也带来了潜在的风险和问题:挂载到window的优点简单直接:可以直接通过window.methodName或window.constantName......
  • 拖拽改变div大小方法
    constupdateWidth=()=>{letresize=document.getElementById("datatree");letmainForm=document.getElementsByClassName("mainForm");resize.onmousedown=function(e){letstartX=e.clientX;......
  • E91 换根DP P3647 [APIO2014] 连珠线
    视频链接:E91换根DPP3647[APIO2014]连珠线_哔哩哔哩_bilibili    P3647[APIO2014]连珠线-洛谷|计算机科学教育新生态(luogu.com.cn)//换根DPO(n)#include<iostream>#include<cstring>#include<algorithm>#include<vector>usingnamespacestd......
  • 28. Object 有哪些常用方法?大致说一下每个方法的含义
    java.lang.Object下面是对应方法的含义。clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常深拷贝也需要实现Cloneable,同时其成员变量为引用类型的也需要实现Cloneable,然后重写clone方法。finalize......
  • 写一个方法找出在一个数组中和为目标值的两个整数
    在前端开发中,你可以使用JavaScript来编写一个方法,该方法可以找出数组中和为目标值的两个整数。以下是一个简单的示例:functionfindTwoSum(arr,target){constmap=newMap();for(leti=0;i<arr.length;i++){constcomplement=target-arr[i];......
  • 微信打开的h5页面如何调用微信的方法?
    在微信中打开的H5页面想要调用微信提供的功能或方法,通常需要使用微信JS-SDK。这个SDK为微信内的网页开发者提供了丰富的微信原生功能,如微信支付、分享、扫一扫等。以下是如何在微信H5页面中集成微信JS-SDK并调用其方法的基本步骤:注册并获取AppID:首先,你需要在微信公众平台上......
  • 小程序商城制作教程就用这个方法,百试百灵(教程大全)
    随着移动互联网的发展,越来越多的商家开始关注如何通过小程序商城来拓展自己的业务。说到小程序商城制作,很多人可能觉得它很复杂或者需要很高的技术门槛,其实完全不必担心!今天我将通过这篇文章,带大家从零开始,一步步了解小程序商城的制作方法,帮助商家们快速入门并应用到实际......
  • 写一个方法,找出最接近当前的数的2的指数的数
    在前端开发中,你可以使用JavaScript来编写这个方法。以下是一个示例函数,它接受一个数字作为参数,并返回最接近该数字的2的指数数:functionfindClosestPowerOfTwo(num){//检查输入是否为正数if(num<=0){thrownewError('Inputmustbeapositivenumber');}......
  • 写个方法求出数组中每个元素的二次方,返回新的数组
    在前端开发中,你可以使用JavaScript来实现这个功能。以下是一个简单的函数,它接受一个数组作为参数,并返回一个新数组,其中包含原数组中每个元素的二次方:functionsquareArrayElements(arr){//使用map函数遍历数组,并返回每个元素的二次方returnarr.map(function(element){......