【每日一题】4月2日题目精讲 枚举优化

题号 NC23053
名称 月月查华华的手机
来源 牛客小白月赛12
戳我进入往期每日一题汇总贴~

暴力的话是但是这样也太暴力了。

这就是个简单的枚举优化,不要认为有多么的复杂高深(学算法最忌讳自己吓唬自己,你怕了就已经输了)。

我们可以观察,比如主串(华华的昵称)是,子串(小姐姐的昵称)是 ,那么当 匹配上了之后,再去枚举主串中的 其实是没有意义的,如果我们能做到在 之后跳到 后面第一个 然后在 之后跳到后面的第一个 (如果有的话),直到子串遍历完或者跳不动了,就能出结果了。(如果主串中有两个一样的字母,我们肯定会选前一个,因为是子序列,如果选前一个不可以,那么选后面的同一个字母肯定就更不可以了,因为选越靠后的字母给后面留下的选择余地就越小。)

那么我们怎么实现在主串跳着枚举这个事情呢?

开一个数组表示主串第 个字母之后的第一个分别在哪一个位置,子串每次与之匹配的时候顺着往后走就行。

next数组的维护只需要从后往前扫描主串,在 扫描到第 位的时候始终维护一个数组 表示当前位置往后最靠前的字母分别在哪,然后把这个数组复制给就可以了。

这样的话每次匹配的复杂度是的(只要顺着Bi遍历完就可以判断是不是子序列了)。总复杂度是
代码可戳我查看~

看完邓老师的题解,记得自己做题提高呀~
欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目4月10日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
https://blog.nowcoder.net/n/bd68969aaf2c4e56b63915e9af2aadd6
2 回复 分享
发布于 2020-04-01 13:50
https://blog.nowcoder.net/n/e7c49c6642684980bd09f9d0a02bb9dd 本小白用字典树的方法完成了,时间复杂度应该是O(N)的,不需要常数因子
1 回复 分享
发布于 2020-04-01 11:51
序列自动机:https://blog.nowcoder.net/n/52820e563d9e4c2cbbf6fc700c247b07 多给几个 qwq
1 回复 分享
发布于 2020-04-01 23:33
https://blog.nowcoder.net/n/60f200c0934a4e58bcecbefc100c5936
1 回复 分享
发布于 2020-04-10 00:26
https://blog.nowcoder.net/n/eac84f0b28634e1ca790472ac13482c8
点赞 回复 分享
发布于 2020-04-01 11:18
https://blog.nowcoder.net/n/ab5a05382e7d440c85d1e19edf0d1921
点赞 回复 分享
发布于 2020-04-01 11:23
https://blog.nowcoder.net/n/f1b42ac2b1054c6290977b967026eeea
点赞 回复 分享
发布于 2020-04-01 11:27
https://blog.nowcoder.net/n/0697f06d1e3549c3bee39b3c4066e6b8
点赞 回复 分享
发布于 2020-04-01 11:37
https://blog.nowcoder.net/n/cc97e4ec3c1149278493114534ca080a
点赞 回复 分享
发布于 2020-04-01 12:09
https://blog.nowcoder.net/n/e8abff9739ac4a10851bcd01a32d4b11
点赞 回复 分享
发布于 2020-04-01 12:21
https://blog.nowcoder.net/n/848abe5ad5d342d3b49fe18d5702a7cc
点赞 回复 分享
发布于 2020-04-01 12:29
https://blog.nowcoder.net/n/c86f9e2595e6465ebc6225fbf2a468b8
点赞 回复 分享
发布于 2020-04-01 14:16
https://blog.nowcoder.net/n/fb1e56eaa7ef4241b1ab532659ccfe4e
点赞 回复 分享
发布于 2020-04-01 14:43
https://blog.nowcoder.net/n/35112504be644d58995807459b3ecc29
点赞 回复 分享
发布于 2020-04-01 14:46
https://blog.nowcoder.net/n/eedde0c8811442218eda9e648ec3c804 一道比较简单的字符串题目
点赞 回复 分享
发布于 2020-04-01 17:41
https://blog.nowcoder.net/n/320da862988d4edfbdd9103084ac3ad3
点赞 回复 分享
发布于 2020-04-01 18:00
https://blog.nowcoder.net/n/d5b003c93e0e477ca8270a12370fce81
点赞 回复 分享
发布于 2020-04-01 18:33
https://blog.nowcoder.net/n/5ad44b2d34c94288b956f103b37ab77f
点赞 回复 分享
发布于 2020-04-02 00:44
https://blog.nowcoder.net/n/e327177e770c462f9d39e8f1ff99a119今天的题解
点赞 回复 分享
发布于 2020-04-02 01:08
https://blog.nowcoder.net/n/44e2614b626d4106933d91f166024d45
点赞 回复 分享
发布于 2020-04-02 11:26

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
不讲武德的黑眼圈很能干:接好运
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务