leetcode 91. Decode Ways
来源:互联网 发布:ubuntu 脚本是啥 编辑:程序博客网 时间:2024/05/20 04:46
题意
对给定的数字串编码成字母,不合法的输出0
题解
使用动态规划解决。满足nums[i - 1] * 10 + nums[i]时dp[i] = dp[i - 1] + dp[i - 2],否则dp[i] = dp[i - 1]
代码
public class Solution { int result = 0; public int numDecodings(String s) { if(s.equals("") || s.charAt(0) == '0') return 0; int[] nums = new int[s.length()]; for(int i = 0; i < s.length(); i++) nums[i] = s.charAt(i) - '0'; int[] dp = new int[nums.length]; dp[0] = nums[0] == 0 ? 0 : 1; if(nums.length > 1) { if(nums[0] * 10 + nums[1] <= 26 && nums[1] != 0) dp[1] = dp[0] + 1; else if(nums[1] == 0 && (nums[0] > 2 || nums[0] == 0)) return 0; else dp[1] = dp[0]; } for(int i = 2; i < nums.length; i++) { if(nums[i - 1] * 10 + nums[i] <= 26 && nums[i] != 0 && nums[i - 1] != 0) dp[i] = dp[i - 1] + dp[i - 2]; else if(nums[i] == 0 && (nums[i - 1] > 2 || nums[i - 1] == 0)) return 0; else if(nums[i] == 0) dp[i] = dp[i - 2]; else dp[i] = dp[i - 1]; } return dp[nums.length - 1]; }}
0 0
- Leetcode 91. Decode Ways&&639.Decode ways
- [Leetcode] 91. Decode Ways
- LeetCode --- 91. Decode Ways
- [LeetCode]91.Decode Ways
- [leetcode] 91.Decode Ways
- [leetcode] 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode 91. Decode Ways
- LeetCode *** 91. Decode Ways
- Leetcode:91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode-91.Decode Ways
- LeetCode 91. Decode Ways
- leetcode.91. Decode Ways
- [leetcode]91. Decode Ways
- 字符串编码与Python 3编码
- hdu4521 小明系列问题——小明序列(线段树)
- maven的pom报plugins却是的解决方法
- 网络仿真工具TOTEM之——Worst Case Analysis
- 整数输出2位数,不够用0补齐
- leetcode 91. Decode Ways
- 【LeetCode 233】所有小于等于n的整数中,1出现的总次数,(例如111算3次)
- 销毁窗口
- [BZOJ1053] 反素数 - dfs
- STM32F4学习笔记1
- 单例模式的七种写法
- 直接获取文件的扩展名
- Oracle体系结构
- 《如何欣赏书法》读书笔记(VI)