这道题我们可以将所有的0都删除,然后像最大字段和一样统计过程中的最大分值。首先,先统计0,1的数量算出初始分值,然后在第一二位如果没有0,而且0还存在那么我们就删除第二个1,来使分值最大化。

using namespace std;
int main()
{
    string s;
    cin>>s;
    map<int,int>v;
    for(int i=0;i<s.size();i++){
        if(s[i]=='0'){
            v[0]++;
        }
        else{
            v[1]++;
        }
    }
    int cur=v[1]-v[0],maxn=cur;
    while(v[0]>0){
        if(s[0]=='0'){
            s.erase(s.begin());
            v[0]--;
            cur++;
        }
        else if(s[1]=='0'){
            s.erase(s.begin()+1);
            v[0]--;
            cur++;
        }
        else{
            s.erase(s.begin()+1);
            cur--;
        }
        maxn=max(maxn,cur);
    }
    cout<<maxn<<endl;
}