Leetcode 91. Decode Ways
来源:互联网 发布:淘宝电信手机报价 编辑:程序博客网 时间:2024/05/29 13:39
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.
class Solution {public: int numDecodings(string s) { auto n = s.size(); if (n == 0) return 0; if (s[0] == '0') return 0; if (n == 1) return 1; vector<int> p(2); if (s[1] == '0') { if (s[0] > '0' && s[0] <= '2') { p[0] = 1; p[1] = 1; } else return 0; } else if(s[1] <= '6') { if (s[0] <= '2' && s[0] >= '1') { p[0] = 1; p[1] = 2; } else { p[0] = 1; p[1] = 1; } } else { if (s[0] == '1') { p[0] = 1; p[1] = 2; } else { p[0] = 1; p[1] = 1; } } size_t id = 1; for (size_t i = 2; i!= n; ++i) { id = 1 - id; if (s[i] == '0') { if (s[i - 1] > '0' && s[i - 1] <= '2') { p[id] = p[id]; } else return 0; } else if(s[i] <= '6') { if (s[i - 1] <= '2' && s[i - 1] >= '1') p[id] = p[id] + p[1 - id]; else p[id] = p[1 - id]; } else { if (s[i - 1] == '1') p[id] = p[id] + p[1 - id]; else p[id] = p[1 - id]; } } return p[id]; }};
class Solution {public: int numDecodings(string s) { auto n = s.size(); if (n == 0) return 0; if (s[0] == '0') return 0; if (n == 1) return 1; vector<int> p(2); { stringstream ss; ss<<string(s.begin(), s.begin() + 2); int tmp; ss>>tmp; if (s[1] == '0') { if (tmp == 10 || tmp == 20) { p[0] = 1; p[1] = 1; } else return 0; } else { if (10 < tmp && tmp <= 26) { p[0] = 1; p[1] = 2; } else { p[0] = 1; p[1] = 1; } } } size_t id = 1; for (size_t i = 2; i!= n; ++i) { id = 1 - id; stringstream ss; ss<<string(s.begin() + i - 1, s.begin() + i + 1); int tmp; ss>>tmp; if (s[i] == '0') { if (tmp == 0) return 0; if (tmp == 10 || tmp == 20) continue; else return 0; } else { if (tmp > 10 && tmp <= 26) p[id] = p[id] + p[1 - id]; else p[id] = p[1 - id]; } } return p[id]; }};
阅读全文
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
- c# 调用 ShellExecute
- leetcode015-Palindromic Substrings
- oracle
- RedHat Enterprise Linux 7关闭防火墙方法 在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables st
- C语言-贪吃蛇设计思路——从不知所措到逐渐清晰
- Leetcode 91. Decode Ways
- STS由于找不到JAVA_HOME而无法启动的问题
- Linux内核笔记 -- Events
- 利用Python进行数据分析(六)之pandas基本功能续
- 笔记:北航 余贵珍 深度学习在自动驾驶环境感知中的应用
- 链表的操作(C)
- JavaScript 数字与字符串 比较大小
- 在IntelliJ IDEA下初始化搭建Maven + SpringMVC开发环境(详细)
- Linux内核笔记 -- IRQ