Time limit : 2sec / Memory limit : 256MB
You are given a string $S$ consisting of 0 and 1. Find the maximum integer $K$ not greater than $|S|$ such that we can turn all the characters of $S$ into 0 by repeating the following operation some number of times.
Choose a contiguous segment $[l,r]$ in $S$ whose length is at least $K$ (that is,$r-l+1\geq K$ must be satisfied). For each integer $i$ such that $l\leq i\leq r$, do the following: if $S_i$ is 0, replace it with 1; if $S_i$ is 1, replace it with 0.

#### Constraints

$1\leq|S|\leq10^5$
$S_i(1\leq i\leq N)$ is either 0 or 1.

#### 題解：

[l,r]中所有的0110，最後使得01字符串全0，求最大的$K$

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
const int inf = 0x3f3f3f3f;
char ss[maxn];
int main() {
scanf("%s", ss + 1);
int ans = inf;
int len = strlen(ss + 1);
for (int i = 1; i <= len; i++) { //如果不存在不等和最后一個字符'\0'比較即可
if (ss[i] != ss[i + 1])
ans = min(ans, max(i, len - i));
}
return !printf("%d\n", ans);
}

This site uses Akismet to reduce spam. Learn how your comment data is processed.