题目大意:
给你一个01串,问其是否能拆成若干形如0101010的子串,若能,输出所有子串的0,1 的位置。
解题思路:
其实就是模拟这个选取的过程就行了,就看怎么选比较方便了。
在经过while(true)
的暴力、分别存取0和1的下标来进行二分查找的不断尝(失)试(败)后,找到了一个神奇的写法。
具体操作:开上N个vector,用一个指向所有的待用存储空间的指针不断移动,遇到0就填到这个空间里然后指针向下走,遇到1了就返回到上个位置将1填进去,反复进行这个操作,$O(n)$时间内完美解决。
MyCode:
1 |
|