你可以选择一个长度大于等于k的子串,并对其进行按位取反。答案是允许从初始字符串得到一串1的最大k值。
对于如何解决这个问题,有什么想法吗?
对于如何解决这个问题,有什么想法吗?
I'll mark flipped bits in brackets
1 0 1 0 1 0 0 1 0 1
1[1 0 1 0 1]0 1 0 1
1 1[1 0 1 0 1]1 0 1
1 1 1[1 0 1 0 0]0 1
1 1 1 1[1 0 1 1 1]1
Now that the left half is identical, we'll start using larger ranges
[0 0 0 0 0]0 1 1 1 1]
...and we finish with:
[1 1 1 1 1 1]1 1 1 1
0 1 0 0 0 0 0 0 0 1
[1 0 1 1 1 1 1 1]0 1
1[1 0 0 0 0 0 0 1]1
1 1[1 1 1 1 1 1 0 0]
Now that we have k 1s from one edge, we expand our flipping area as before
[0 0 0 0 0 0 0 0]0 0
[1 1 1 1 1 1 1 1 1 1]
...and we're done.
@Ripi2 我画了一点,并注意到一件事:以0111为例: 0111 ----\n
--
-- --