Qingshan Loves Strings 2

这道题目看官方解答就好了,写的很好

我其实想到了官方解答的,但是卡在了写代码上。。

我想的是利用双指针迭代,但是分类讨论的情况很多。如果不用循环而用题目说的递归,显然更简单(其实官方题解的代码用的也是队列模拟,当然也比双指针简单)

借鉴一下题解的code吧

注意题目要求输出的是每次插入的位置,想一下应该如何输出,见代码

update 2024.7.25

一种新的证明方法:从两边向中间考虑,当第一次遇到了相等时,不妨设为两个\(1\),于是我们在左边添加"\(01\)",右边指针向左走一个,一直这么做直到右边指针走到了一个\(0\),然后与新添加的\(1\)匹配,假设\(0\)更多,那么现在又要在右边添加"\(01\)"了;重复上述过程可以发现,每一时刻两个指针要么都指向原串的字符,要么一个指向原串字符,另一个指向新添加的字符,于是每次操作都会让一个原串字符被遍历,最多添加次数为\(O(n)\)

posted @ 2024-03-14 21:24  最爱丁珰  阅读(4)  评论(0编辑  收藏  举报