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,分别考虑s[i],s[j]
int numDecodings(string s) {
int n = s.size();
vector<int> dp(n, 0);
if(n == 0) return 0;
if(s[0] == '0')
dp[0] = 0;
else
dp[0] = 1;
for(int i = 1; i < n; i++)
{
if(s[i - 1] - '0' > 2)
dp[i] = s[i] == '0'? 0 : dp[i - 1];
else if(s[i - 1] - '0' == 2)
if(s[i] - '0' > 6)
dp[i] = dp[i - 1];
else if(s[i] != '0')
dp[i] = dp[i - 1] + (i - 2 >= 0 ? dp[i - 2] : 1);//注意:这里要加上括号
else
dp[i] = (i - 2 >= 0 ? dp[i - 2] : 1);
else if(s[i - 1] - '0' == 1)
if(s[i] != '0')
dp[i] = dp[i - 1] + (i - 2 >= 0 ? dp[i - 2] : 1);
else
dp[i] = (i - 2 >= 0 ? dp[i - 2] : 1);
else
if(s[i] != '0')
dp[i] = dp[i - 1];
else
dp[i] = 0;
}
return dp[n - 1];
}
int numDecodings(string s) {
int n = s.size();
vector<int> dp( n + 1 , 0);
if(s[0] == '0' || n == 0)return 0;
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i < n + 1; i++)
{
int first = s[i - 1] - '0';
int second = stoi(s.substr(i - 2, 2));
if (1 <= first && first <= 9)
dp[i] = dp[i - 1];
if (10 <= second && second <= 26)
dp[i] += dp[i - 2];
}
return dp[n];
}
总结:代码2耗时6ms,代码1耗时3ms,显然代码2比1判断更少,但是1的耗时少,substr()的原因?请大神指教。
Vant组件引入后样式不出现的解决一般是babel.config里面没有配置module.exports = { plugins: [ ['import', { libraryName: 'vant', libraryDirectory: 'es', style: (name) => `${name}/style/less`, }, 'vant'] ]}出现其他问题:3.先卸载 less-loader,重新安装:np
对于很多人来说,我懂java语法,甚至面向对象的特性啦这些都是有了解的,但我就是不会做项目,其实项目真有那么难吗? 对于基础不牢固的人来说,我还不会这个基础点,那个还没学呢,你让我做个项目,我保证做不出来,其实,真实的项目中用到的知识点真有那么多吗?据我的经验来看,一个项目中能用到你学到的技术的百分之三十,已经是很了不起的综合项目了。所以不要有畏难情绪,走进去你就会发现,原来我已经会这么...
爱忘事、不自律,有了这5款时间管理工具,堪比“罗志祥”!
jenkins->系统管理->管理插件->高级在下面URL中更换地址,jenkins插件源:http://mirror.esuni.jp/jenkins/updates/update-center.json也可以更换这个:清华地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-...
懵逼王学Redis —-前言
向量的范数见 向量的范数矩阵的1-范数:列元素绝对值之和最大矩阵的2-范数即:矩阵 的最大特征值开平方根矩阵的无穷范数:行绝对值之和最大还有一种是把矩阵拉伸成向量,然后再对向量求范数。在论文里面大家用的模棱两可的,具体文章还要具体来看。此处引用知乎上大佬的解答大佬: 矩阵有两种范数的定义,一种是矩阵范数,用来衡量矩阵作为变换时对向量拉扯、形变的能力,p-norm 定义为 ||A||p...
前段时间,项目中需要使用阿里云短信以及短信回执,在这里记录一下遇到的问题以及解决方案。首先,调用阿里云的短信API,返回类型是SendSmsResponse,格式如下。Code表示调用API的返回值,具体错误码参考官网[API错误码]。当Code为OK时表示调用API成功,但这并不表示接收方收到该条短信,这时候需要查看短信发送回执,也就是订阅SmsReport短信状态报告,获取短信发送状态。...
经常在程序操作文件时,遇到文件以及损坏的问题,那么如何校验文件是否损坏呢?这就需要Apache Tika包了,maven引用如下:org.apache.tikatika-parsers1.16org.apache.tikatika1.16pomorg.apache.tikatika-core1.16使用方法:try {Tika tika = new Tika();URL url = new URL...
1、根据业务需求设计数据库表2、根据数据库表设计一个Excel模板模板的每列属性必须与表字段一一对应3、环境准备我这里项目环境是基于SpringBoot单体式架构,持久层用的公司框架,内置了基于MyBatis-Plus的各种单表操作的方法。导入依赖 <!--使用POI读取文件--> <dependency> <groupId>org.apache.poi</groupId>
1 字典1.1 可变类型与不可变类型序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可
Vue-cli3以上版本怎么配置Webpackvue-cli3以下版本中,关于webpack的一些配置都在config目录文件中,可是vue-cli3以上版本中,没有了config目录,那该怎么配置webpack呢?这时,vue-cli给我们提供了一个可选的配置文件(但需要我们自己手动创建哦vue.config.js,跟package.js同级)看下vue.config.js中常用的配置module.exports = {}publicPath:部署应用包的基本Url,默认/, 可以设置为
1 、定义数组,要给定其长度,也可以用Type a[ ] = {……} 的方式。在对数组进行操作时,可能需要计算数组长度,方法是:sizeof(数组名)/sizeof(元素类型) 2、指针指向的字符数组长度的获取方法,不能用sizeof,因为用sizeof(指针),得到指针长度为4应该用strlen()函数。#include #include i