Erase First or Second Letter
先来看一下官方解答
首先对任意一个操作序列,如果存在某次操作二排在相邻的操作一前面,那我们把这两次操作换成连续的两次操作一,得到的字符串显然不变
所以我们可以先一直进行操作一,然后在进行操作二,我们把一种操作序列记为
我们接下来考虑什么时候两个字符串是一模一样的
所以显然有
而在满足上面两个条件之后,我们惊奇地发现,这居然也是充分的(也就是此时字符串一定相同了)
所以我们有了下面这么一个算法:我们找出
这题目的官解也提示我们,遇到这种操作序列的题目(放在比较前面的),可以考虑不同操作序列的等效性
然后说一下我的做法
我们观察一下样例,第一步操作无论是操作一还是操作二,会得到长度为
update 2024.7.10
重新做了一遍,居然按照官方的做法做出来了。。。
其实想出来也不是很难,操作序列的等效性也是常用trick,然后就要去找什么时候两个字符串是相同的,显然要先长度相同,也就是最后一截尾巴要一样长,然后再在前面去选一个字符作为开头,这样也很easy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构