91. Decode Ways, leetcode
来源:互联网 发布:sql复杂查询实例 编辑:程序博客网 时间:2024/05/18 16:17
题目:
A message containing letters from A-Z
is being encoded to numbers using the following mapping:
'A' -> 1'B' -> 2...'Z' -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message "12"
, it could be decoded as "AB"
(1 2) or "L"
(12).
The number of ways decoding "12"
is 2.
代码1,分别考虑s[i],s[j]
int numDecodings(string s) { int n = s.size(); vector<int> dp(n, 0); if(n == 0) return 0; if(s[0] == '0') dp[0] = 0; else dp[0] = 1; for(int i = 1; i < n; i++) { if(s[i - 1] - '0' > 2) dp[i] = s[i] == '0'? 0 : dp[i - 1]; else if(s[i - 1] - '0' == 2) if(s[i] - '0' > 6) dp[i] = dp[i - 1]; else if(s[i] != '0') dp[i] = dp[i - 1] + (i - 2 >= 0 ? dp[i - 2] : 1);//注意:这里要加上括号 else dp[i] = (i - 2 >= 0 ? dp[i - 2] : 1); else if(s[i - 1] - '0' == 1) if(s[i] != '0') dp[i] = dp[i - 1] + (i - 2 >= 0 ? dp[i - 2] : 1); else dp[i] = (i - 2 >= 0 ? dp[i - 2] : 1); else if(s[i] != '0') dp[i] = dp[i - 1]; else dp[i] = 0; } return dp[n - 1];}
代码2,将最后两位合并为一个数:
int numDecodings(string s) { int n = s.size(); vector<int> dp( n + 1 , 0); if(s[0] == '0' || n == 0)return 0; dp[0] = 1; dp[1] = 1; for(int i = 2; i < n + 1; i++) { int first = s[i - 1] - '0'; int second = stoi(s.substr(i - 2, 2)); if (1 <= first && first <= 9) dp[i] = dp[i - 1]; if (10 <= second && second <= 26) dp[i] += dp[i - 2]; } return dp[n];}
代码3,代码的降维,用pre1表示dp[i-1],pre2表示dp[i-2]即可。
总结:代码2耗时6ms,代码1耗时3ms,显然代码2比1判断更少,但是1的耗时少,substr()的原因?请大神指教。
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高级特性 - 迭代
- 【备忘】BIGD牛魔王UI图标设计iocn主题设计全套高清视频教程
- 前端复习--深入css
- 多态
- codeforces 715C. Digit Tree
- 91. Decode Ways, leetcode
- 消息队列
- 内部类
- IT研发老兵跳槽记之(四):技术进阶之易筋经与少林七十二绝技
- 【备忘】黑马Android76期从入门到就业班视频教程下载
- python中turtle模块的基本命令
- Log4j 学习笔记(二)Log4j快速入门配置文件log4j.properties
- selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
- 上班感悟