博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【一天一道LeetCode】#91. Decode Ways
阅读量:4197 次
发布时间:2019-05-26

本文共 1360 字,大约阅读时间需要 4 分钟。

一天一道LeetCode

本系列文章已全部上传至我的github,地址:

欢迎大家关注我的新浪微博,
欢迎转载,转载请注明出处

(一)题目

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~26代表A~Z,给定一串数字,求出能解码出多少种不同的结果。

解题思路:采用动态规划,从后往前,状态转移方程是:dp[n] = dp[n+1]+dp[n+2].
例如:123,从后往前算,3一种,23两种,123就是1+2三种,
当然要考虑很多特殊情况,如230,227,012等等

class Solution {public:    int numDecodings(string s) {        int len = s.length();        if(len==0) return 0;        vector
df(len,-1); int num = dfsNumDecWays(s,0,df); return num; } int dfsNumDecWays(string &s , int idx , vector
& df) { int num1= 0; int num2=0; if(idx>=s.length()){
//越界了就返回1 return 1; } if(df[idx]!=-1) //代表没有访问到 { return df[idx]; } if(s[idx]>='1'&&s[idx]<='9') { num1 = dfsNumDecWays(s,idx+1,df);//求dp[n+1] if(idx+1
=1&&temp<=26) { num2=dfsNumDecWays(s,idx+2,df);//求dp[n+2] } } } df[idx] = num1+num2;//状态转移方程 return num1+num2; }};
你可能感兴趣的文章
软件测试框架介绍
查看>>
软件自动化测试框架的发展
查看>>
nginx反向代理的缓存
查看>>
基于Keepalived+Haproxy+Varnish+LNMP企业级架构
查看>>
实现haproxy+LNMT负载均衡架构
查看>>
常感冒的小朋友的应对
查看>>
centos单机安装Hadoop2.6
查看>>
centos单机安装Spark1.4.0
查看>>
java - 日期相减、四舍五入
查看>>
java - mysql连接
查看>>
java - properties read write
查看>>
折腾sparkR
查看>>
Install Python 2/3 on CentOS 6.5 Server
查看>>
PySpark in PyCharm on a remote server
查看>>
virtualbox增强功能-VBoxGuestAdditions安装
查看>>
Linux下安装MySql(版本5.5以上)
查看>>
Virtualbox中Linux添加一个新磁盘
查看>>
胜景之地
查看>>
jar 独立运行文件制作(于windows平台)
查看>>
使用selenium动态爬取
查看>>