Decode Ways
来源:互联网 发布:浙江大学网络教育 编辑:程序博客网 时间:2024/04/30 06:25
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.
算法思想:对于一个message中的某个数字,考察其后面的数字,有以下几种截断情况:
1,若数字大于2,只有一种解码方式,即该数字不可能跟后面数字联合;
2,若数字小于等于2,其后面的数字等于0,也只有一种解码方式,这两个数字必须联合解码;
3,若数字等于1,其后面的数字大于2,有两种解码方式;
4,若数字等于2,其后面的数字大于2且小于等于6,有两种解码方式;
5,若数字等于2,其后面的数字大于6,有一种解码方式;
6,若数字小于等于2,其后面的数字小于等于2且不等于0,那么继续考察接下来的数字,直到出现上面的截断情况为止,
例如“212122212123”,其联合解码长度为12,最后的“3”可以单独解码也可与前面的“23”一起解码;
“212122212120”,其联合解码长度为11,最后的“20”必须一起解码;
“212122212127”;其联合解码长度为11,最后的“7”必须单独解码;
假设截断序列中的联合解码长度为n,其解码的方式有T(n)种,
那么有递推公式,T(n)=T(n-1)+T(n-2),这是一个斐波那契数列,利用迭代法求,参见下面的代码;
将一个message按照 上面的情况截断成各个解码段,算出每段的解码数,相乘即可。
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode ways
- Decode Ways
- Decode Ways
- Decode Ways
- Decode Ways
- iOS 正则
- 阿里巴巴集团 2014年秋季校园招聘 系统工程师 北京 笔试卷(解析)
- 遇到了你,我知足了
- Android控件ListView自定义列表布局
- 从nib文件加载自定义的UITableviewCell
- Decode Ways
- Java的4种XML解析
- 如何通过adb 启动WIFI连接网络
- android消息机制——Handler类
- 经典问题
- Java网络与线程之初总结
- boost asio 简单示例
- Ubuntu下安装easy_install
- hdu 2795 Billboard 线段树 单点更新