当前位置: 首页 > news >正文

济南地区做企业网站的公司免网站域名注册

济南地区做企业网站的公司,免网站域名注册,建设网站怎样分配给用户空间,运城做网站要多少钱1.题目解析 题目来源:91.解码方法——力扣 测试用例 2.算法原理 基础版本 1.状态表示 由于题目只要求返回第i个位置的可能情况,则只需要开辟n(ns.size())个大小的dp表即可 2.状态转移方程 题目可知第i个位置可以单独解码也可以与前一个位置组合解码&am…

1.题目解析

题目来源:91.解码方法——力扣 

测试用例 

2.算法原理

 基础版本

1.状态表示

由于题目只要求返回第i个位置的可能情况,则只需要开辟n(n=s.size())个大小的dp表即可

2.状态转移方程

题目可知第i个位置可以单独解码也可以与前一个位置组合解码,所以两种情况都需要讨论,当满足单独解码就加上前i-1个位置所有的可能性即可,当也满足与前一个位置组合解码就再加上前i-2个位置的所有可能性即可

3.初始化

需要初始化开始两个位置的值,其中dp[0]只需要判断第一个字符s[0]是否为'0'即可,为0则不能解码,dp[0]=0,反之可以解码则dp[0]=1

但是需要注意dp[1]需要判断的它本身是否可以单独解码还要判断是否可以和前一个位置组合解码

4.细节处理

需要注意这种解法不能处理n为1时的情况,需要单独处理n=1时返回dp[0]的值

5.返回值

由于只用返回第i个位置的可能性,所以映射的下标就是n-1,最后返回dp[n-1]即可

 优化版本

1.状态表示

前面的基础版本中对于第二个位置的初始化有些多余,不如只用初始化第一个dp表的位置即可,所以这里使用虚拟位置来优化

由于多了一个虚拟位置,就需要创建dp(n+1)的dp表,第一个位置用作虚拟位置,此时对应的第i个位置映射的下标也为i,更加清晰

2.状态转移方程

这里主要讲解的是对于虚拟位置的值如何确定,首先dp[1]也就是原来的dp[0],直接初始化即可,但是如果要借助状态转移方程初始化dp[2]的时候,需要用到虚拟位置的情况就是在组合解码时,,也就是dp[2] += dp[2-2]时,此时因为已经确定了dp[2-1]可以与dp[2]组合解码也就是说dp[2-1]!='0',这时将dp[0]虚拟位置置为1即可

3.初始化

简化了之后只用初始化除虚拟位置的第一个位置即可

4.细节处理

dp表多了一个虚拟位置但是s字符串没有,所以需要在基础版本的情况下将s的映射-1

5.返回值

dp表多开了一个位置,直接返回dp[n]即可

3.实战代码

初始版本 

class Solution {
public:int numDecodings(string s) {int n = s.size();//dp表默认初始化为0 vector<int> dp(n);dp[0] = (s[0] != '0');//特殊处理边界情况if(n == 1){return dp[0];}//当前两个数字都可以单独编码则加一种情况if(s[0] != '0' && s[1] != '0'){dp[1] += 1;}//当前两位可以组合编码则多一种情况int t = (s[0] - '0') * 10 + s[1] - '0';if(t >= 10 && t <= 26){dp[1] += 1;}for(int i = 2;i < n;i++){//当前位置可以单独编码if(s[i] != '0'){dp[i] += dp[i-1];}//当前位置可以和前一个位置组合编码int t = (s[i - 1] - '0') * 10 + s[i] - '0';if(t >= 10 && t <= 26){dp[i] += dp[i-2];}}//返回第n个位置,映射下标为n-1return dp[n-1];}
};

优化版本 

class Solution {
public:int numDecodings(string s) {int n = s.size();vector<int> dp(n+1);//将新加入的位置置为1dp[0] = 1;//将原来的第一个位置的初始值右移dp[1] = (s[1-1] != '0');for(int i = 2;i <= n;i++){//当第i个位置可以单独解码则加上前i-1个位置的可能性//第i个位置的映射下标为i-1if(s[i-1] != '0'){dp[i] += dp[i - 1];}//当第i个位置可以与前一个位置组合解码则加上前i-2个位置的可能性//注意不能有前导0,所以t从10开始限制范围int t = (s[i-2] - '0')*10 + s[i-1] - '0';if(t >= 10 && t <= 26){dp[i] += dp[i-2];}}return dp[n];}
};

 

http://www.yayakq.cn/news/765438/

相关文章:

  • 欧美风格的网站泰安网络建设
  • 自己做下载网站吗a站在线观看人数在哪
  • 企业网站建设要多注册商标需要多长时间
  • 网站开发实现前后端分离东莞推广优化公司
  • 建设厅官方网站云南建设招标网站首页
  • 手机网站和电脑网站的区别哪些知名网站用wordpress
  • 可以用自己电脑做网站服务器吗nginx缓存方案 WordPress
  • 东莞网站建设总部地址wordpress404页面更爱
  • 国外购物网站排行榜免费的网站申请
  • 生成网站有吗免费的电子商务网站建设期末试卷答案
  • 朝阳市营商环境建设监督局网站wordpress djiango
  • 网站建设和管理什么意思成都住建局官网从哪里查房屋备案没有
  • 网站建设布局样式中国建设银行手机wap网站
  • 做文库类网站网络营销案例分析200字
  • 清河做网站报价怎么做网站页面
  • 相亲网站上做it的骗术电商运营职业规划
  • 如何学网站建设网站被k 申诉
  • 技术社区网站开发例子厦门网站搭建
  • 做公众号用什么网站wordpress文件储存
  • 建设企业网站企业网上银行对公二手网站建设方案
  • 珠宝首饰网站模板黑龙江国际旅行社电话
  • 做网站的必要条件成都本地推广平台
  • 想建立什么网站自己有服务器怎么搭建网站
  • 做静态网站成本提升神马关键词排名报价
  • 网站建设系统改版给人做设计的网站
  • 做涂鸦的网站朝阳建设局网站
  • 建程网手机版建设建筑工程网杭州网站推广与优化
  • 网站文章内容的选取深圳社保
  • 网站整体设计流程个人可以做网站导航
  • 个人网店和网站的区别暗网网站有那些