一个字符串,仅由字符"0"和"1"组成,您必须选择连续的子字符串ss并从子字符串中删除字符的所有匹配项,这是其中的严格少数。也就是说,如果子字符串中"0"的数量严格小于"1"的数量,请从子字符串中删除所有出现的"0"。如果"1"的数量严格小于"0"的数量,请删除所有出现的"1"。如果金额相同,则不执行任何操作,您必须只应用一次该操作。可以删除的最大字符数是多少?
输入
第一行包含单个整数t(1≤t≤10^4) ― 测试用例的数量。每个测试用例的唯一行包含一个非空字符串ss,仅由字符"0"和"1"组成。长度s不超过2⋅10^5
字符串的总长度ss在所有测试用例中不超过2⋅10^5
输出
对于每个测试用例,打印一个整数 — 在应用操作一次后可以删除的最大字符数.
输入
4
01
1010101010111
00110001000
1
输出
0
5
3
0
#include <bits/stdc++.h>
using namespace std;
const int N = 2*1e5;
int main()
{
int n;cin >> n;
while(n--){
string a;cin >>a;
bitset<N>bitset1(a);
int sum1=bitset1.count();
int sum0=a.size()-sum1;
if(sum1>sum0){
cout<<sum0<<endl;
}else{if(sum1<sum0){cout<<sum1<<endl;}
else{cout<<"0"<<endl; }
}
}return 0;
}
【感谢您的观看】