LeetCode 91. 解码方法 Java/Python
一条包含字母 A-Z
的消息通过以下方式进行了编码:
'A' -> 1 'B' -> 2 ... 'Z' -> 26
给定一个只包含数字的非空字符串,请计算解码方法的总数。
示例 1:
输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。
示例 2:
输入: "226" 输出: 3 解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。
思路:动态规划边界条件 考虑为s[0] 或者 s.length()为0的情况为return 0
推导式:若s[i] != 0那么一步就能到达,如果s[i] == 1 or s[i] =2 s[i-1] <= 6那么两步可以达到吗,大于26的都是一种方式到达
Java:
public class Solution {public int numDecodings(String s) {//动态规划标记int[] f = new int[s.length()];char[] c = s.toCharArray();//边界情况if(c.length == 0){return 0;}//第一个元素f[0] = c[0] > '0' ? 1:0;if(c.length == 1){return f[0];}//f[1]的值是关键,写不好,将会出现各种错误int k = c[0] > '0' && c[1] > '0'? 1:0;f[1] = k + (c[0] == '1' || c[0] == '2' && c[1] <= '6' ? 1:0);//从前往后遍历for(int i = 2; i < c.length; i++){if(c[i] > '0'){//第一个元素大于0,添加情况f[i] += f[i-1];}//在10-26之间则添加两个字母组成一个的情况if(c[i-1] == '1' || (c[i-1] == '2' && c[i] <= '6')){f[i] += f[i-2];}}return f[c.length-1];}
}
Python:
class Solution:def numDecodings(self, s):""":type s: str:rtype: int"""dp = [0] * (len(s)+1)#边界情况if len(s) == 0 or s[0] == '0':return 0dp[0] = 1dp[1] = 1for i in range(2,len(s) + 1):if s[i-1] > '0': #若s[i-1]不为0,则s[i-1]可单独存在,s[i]可由s[i-1]走1步到达dp[i] = dp[i-1]if s[i-2] == '1' or (s[i-2] == '2' and s[i-1] <= '6') : #承接上面,若s[i-2]*10+s[i-1]<=26,则s[i]可由s[i-2]走2步到达dp[i] += dp[i-2]return dp[len(s)]
LeetCode 91. 解码方法 Java/Python相关推荐
- LeetCode 91.解码方法
LeetCode 91.解码方法 ways: s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2]; ...
- Java实现 LeetCode 91 解码方法
91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总 ...
- leetcode: 91. 解码方法
91. 解码方法 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ...
- LeetCode 91. 解码方法(动态规划)
1. 题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...
- 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)
步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...
- Leetcode 91. 解码方法 (每日一题 20211013)
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映 ...
- leetcode - 91. 解码方法
一条包含字母 A-Z 的消息通过以下方式进行了编码: ′A′−>1'A' -> 1′A′−>1 ′B′−>2'B' -> 2′B′−>2 ......... ′Z′ ...
- leetcode 91 解码方法 动态规划 递推
// 各种特殊情况处理 // 选择从右往左,从左往右也是一样class Solution { public:int numDecodings(string s) {int n = s.length() ...
- leetcode 91. 解码方法(dp)
解题思路 记忆化搜索,记录已经计算过的子问题 代码 func numDecodings(s string) int {temp:=make([]int,len(s),len(s))for i := r ...
最新文章
- SQLSERVER model数据库
- protobuf在go中的应用
- 在VS2010中配制Elmah邮件发送到Gmail
- 爬虫:Charles证书设置为系统信任证书(root)
- 电大计算机网络网考,电大计算机网络(本)学习周期01任务A_0009答案
- c语言删除文件remove_Python中的文件和目录操作
- C++预处理指令#define,#if,#endif等
- 为何手机厂商如此热衷 5G?
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
- 茗创:近红外数据处理业务
- xadsafe做暗刷_XADsafe去广告热心网友共享规则库部分开源(11月13更新)
- PyG搭建GCN实现链接预测
- 悟透JavaScript - 对象素描
- 重复性、分辨率的计算方法
- [转载]推荐...推荐...破解入门教程和解密工具
- Coremail2022Q4邮件安全报告:暴力破解骤降,盗号问题有所缓解?
- Task01:熟悉新闻推荐系统的基本流程(代码复现)
- 转行做程序员,你后悔了吗
- kaggle篇章二,新手入门泰坦尼克号的幸存者预测实验的超详细全过程记录
- 玻璃幕墙清洗机器人市场前景_玻璃幕墙越障清洁机器人
热门文章
- 揭密: M2和高房价究竟谁推高了谁?
- tp1200触摸屏开孔尺寸_GE触摸屏与西门子PLC通讯
- 亨通光电和量子计算机进展,$亨通光电(SH600487)$
- Python调用有道翻译API
- (ESC IIS笔记)类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内
- 315 433MHZ无线遥控接收解码源程序 Keil源程序 含AD格式电路图
- 表达式求值的三种方法
- C# 安捷伦 Agilent 34401A 通讯(含数据手册)
- 霍金走了,宇宙少了一个预言家
- 小区物业管理系统(含源文件)