相邻字符连续删除的场景,这是一个典型的栈的应用。
所以用栈这么操作后,在栈中的元素必然是 101010...
或者 010101...
这样的
这部分元素我们考虑修改,现在令栈中的元素构成的串为 t 。
t 的长度为偶数,则修改 2t 个即可。
小美有一个 01 串 s,当串中相邻字符相同时,可以将这两个相邻字符删除,得到一个新的串。一直删除到串中相邻字符均不相同。
现在,小美对这个串修改了恰好 k 次,一次修改可以将 '1'
修改为 '0'
,或者将 '0'
修改为 '1'
。
现在,小美想问你,将 s 修改恰好 k 次后,再进行删除操作,最终串的长度最短为多少?
第一行,两个正整数 n,k(1≤k≤n≤105),表示字符串 s 的长度和修改次数。
第二行,一个长度为 n 的字符串 s ,保证 s 的字符要么是 '0'
,要么是 '1'
k 次修改后进行删除,最终串的长度最小值。
输入
4 1
1010
输出
2
说明
将第二个字符修改为 '1'
,然后最终的串为 "10"
输入
6 3
101111
输出
0
说明
修改第一个,第三个,第四个字符为 '0'
,最终相邻字符删除,最终的串中字符均可以删除。
串成为一个空串。