leetcode笔记—Decode Ways
来源:互联网 发布:lua 读取json配置文件 编辑:程序博客网 时间:2024/06/05 14:55
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) { vector<int> ways(s.size(), 0); if (s.size() == 0) return 0; if (s.size() == 1) return check(s[0]); ways[0] = check(s[0]); ways[1] = (check(s[0]) & check(s[1])) + check(s[0], s[1]);//一位数的实现+两位数的实现 for (size_t i = 2; i < s.size(); ++i) { if (check(s[i])) ways[i] += ways[i - 1];//如果高位不为0, if (check(s[i - 1], s[i])) ways[i] += ways[i - 2];//如果高两位可以是一种实现 } return ways[s.size() - 1]; } int check(char one) //一位数时,不为0,则有一种方式 { return (one != '0') ? 1 : 0; } int check(char one, char two) //两位数时,如果十位数为1或者,十位数为2且个位数小于6是,则为一种方式 { return (one == '1' || (one == '2' && two <= '6'))? 1 : 0; }};
动态规划解法:
class Solution { public: int numDecodings(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int len = s.size(); if(len ==0) return 0; int a = 1;//f(n-2) int b = 0;//f(n-1) // f(n) += f(n-1) s[n] != '0'; // f(n) += f(n-2) s[n,n-1] eq "10"-"26"; if(s[len-1]!='0') b = 1; if(len==1) return b; int c ; for(int i = 2; i <=len; i++) { string tmp = s[len-i]+s[len-i+1]; c = 0; if(s[len-i]!='0') c += b; if(s[len-i]=='1' || s[len-i]=='2' && s[len-i+1] <= '6') c += a; a = b; b = c; } return c; } };
0 0
- leetcode笔记—Decode Ways
- leetcode笔记:Decode Ways
- LeetCode —— Decode Ways
- LeetCode——Decode Ways
- leetcode——Decode Ways
- Leetcode 91. Decode Ways&&639.Decode ways
- leetcode 091 —— Decode Ways
- Leetcode——91. Decode Ways
- Leetcode——639.Decode Ways II
- 动态规划——Decode Ways[LeetCode]
- LeetCode: Decode Ways
- [LeetCode]Decode Ways
- LeetCode Decode Ways
- LeetCode : Decode Ways
- [Leetcode] Decode Ways *
- [leetcode] Decode Ways (!!)
- leetcode 17: Decode Ways
- Leetcode: Decode ways
- div嵌套后margin出现失效(转移)的问题
- 实战Walker之侧滑菜单的实现分析
- hdu 4349(Lucas定理)
- 权限树问题
- centos7下Elasticsearch5.2.2和head 插件环境搭建
- leetcode笔记—Decode Ways
- 数组做数据成员2(改)
- 面试问题
- yii2中如何使用modal弹窗之结合gridview的使用
- 设计模式六大原则
- find命令
- 【CF679E】Bear and Bad Powers of 42
- 虚函数和纯虚函数的区别
- Lucas求解组合数模板