题解 | #牛牛的身高#

小红的 01 串

https://ac.nowcoder.com/acm/problem/266612

这道题我们可以将所有的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;
}
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务