[LeedCode OJ]#91 Decode Ways
2015-08-24 13:48
351 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:https://leetcode.com/problems/decode-ways/
题意:
字母A~Z分别用数字1~26表示,现在给定一个数字串,问能够有几种字母表示方法
思路:
首先,dp[i]表示到底i位有几种表示方法
然后我们进行考虑
1.对于目前这位是1~9的情况
那么我们只考虑前一位的状况的时候为dp[i]+=dp[i-1]
而如果前两位在10~26的范围内,则还需要dp[i]+=dp[i-2]
2.对于这位是0的情况,而又不能与前一位组成10或者20
则dp[i]=0
题目链接:https://leetcode.com/problems/decode-ways/
题意:
字母A~Z分别用数字1~26表示,现在给定一个数字串,问能够有几种字母表示方法
思路:
首先,dp[i]表示到底i位有几种表示方法
然后我们进行考虑
1.对于目前这位是1~9的情况
那么我们只考虑前一位的状况的时候为dp[i]+=dp[i-1]
而如果前两位在10~26的范围内,则还需要dp[i]+=dp[i-2]
2.对于这位是0的情况,而又不能与前一位组成10或者20
则dp[i]=0
class Solution { public: int numDecodings(string s) { int len = s.length(); if(s == "0") return 0; vector<int> dp; dp.resize(len+1); int i,j,k; dp[0] = 0; if(s[0]>='1'&&s[0]<='9') dp[0] = 1; for(i = 1; i<len; i++) { if(s[i]=='0') { if(s[i-1]=='1'||s[i-1]=='2') { if(i>1) dp[i]+=dp[i-2]; else dp[i] += 1; } continue; } dp[i]+=dp[i-1]; if(s[i-1]=='1' || (s[i]<='6'&&s[i-1]=='2')) { if(i>1) dp[i]+=dp[i-2]; else dp[i] += 1; } } return dp[len-1]; } };
相关文章推荐
- nignx安装
- 用angular来思考问题How do I “think in AngularJS” if I have a jQuery background?
- 【LeetCode】9. Palindrome Number
- 你写的前端到底用没用到这些
- C#软件winform程序安装包制作及卸载程序制作
- jsonc库使用
- busybox 安装
- tomcat无法连接,./shutdown.sh的时候报connect refuse
- Hibernate乐观锁和悲观锁
- TLD算法流程说明--episode2
- 利用模板导出文件(一)之XLSTransformer导出excel文件
- 小议:部署SharePoint 2013时,无法连接SQL Server问题
- linux centos6.5 修改ip地址
- c语言解析json数据
- TLD算法流程说明--episode1
- 欢迎使用CSDN-markdown编辑器
- NSIS 控制面版显示卸载信息
- 【C++】指针和引用
- shu_1548 悟空问题(大哥,主妖怪抓走的朋友!)
- Android pm命令 以及在终端安装卸载安装包方法