2022.10.22-D 括号序列
题意
一个字符串是“好”的,需要存在一个长度相等的合法括号序列,满足:
- 对于一对匹配的括号,它在字符串上对应位置的字母相同。
现在给出一个仅有小写字母组成的字符串 ,问有多少个子串 是“好”的。
思路
没有很看懂官方题解对于那个结论的证明,这里提供由 lby 大佬想到的不同解法:
官方题解也有提到,判断一个串是否合法,就是开一个栈,如果当前字母与栈顶字母相同,那么就弹出;否则就将当前字母加入栈中。最后如果栈为空,那么就是合法子串。
我们记录 表示以 为左端点的合法串的个数。
当我们进行判断的过程中,一旦栈为空,那么我们其实就可以停止了,这时答案数就是 (假如是在 处停止的),因为 是一个相同的子问题。
那么其实就是找到右边最靠近 的 ,使得 是一个合法串。
这显然有 。
所以我们考虑开一个数组 ,表示 是合法串, 的最小 。
当我们固定 为左端点时,我们就取出 ,记为 ;
注意,当 时,。
这样我们就能有 。
那怎么更新 呢?
很简单,我们将 都迁移到 就行了。
然后 ,显然满足我们上面的定义。
代码
__EOF__

本文作者:zuytong
本文链接:https://www.cnblogs.com/zuytong/p/16821430.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zuytong/p/16821430.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】