题目描述
给定长度非0的非空01串SSS。
找出SSS的非空连续子串TTT满足串中'0'的个数-'1'的个数最大。
你只需要输出最大值即可。
输入格式
一行一个01串表示SSS。
输出格式
一行一个数表示答案。
输入输出样例
输入 #1复制
0111100101
输出 #1复制
2
最大子段和问题
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int main()
{
string s;
cin >> s;
int l = s.size();
int maxx = -1;
int a[maxn],f[maxn];
for(int i = 0;i < l;i ++) {
if(s[i] == '0') a[i] = 1;
else a[i] = -1;
f[0] = a[0];
if(i >= 1){
f[i] = max(f[i-1] + a[i],a[i]);
maxx = max(maxx,f[i]);
}
}
cout << maxx << endl;
return 0;
}