A. Erasing Zeroes
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
You are given a string s. Each character is either 0 or 1.

You want all 1’s in the string to form a contiguous subsegment. For example, if the string is 0, 1, 00111 or 01111100, then all 1’s form a contiguous subsegment, and if the string is 0101, 100001 or 11111111111101, then this condition is not met.

You may erase some (possibly none) 0’s from the string. What is the minimum number of 0’s that you have to erase?

Input
The first line contains one integer t (1≤t≤100) — the number of test cases.

Then t lines follow, each representing a test case. Each line contains one string s (1≤|s|≤100); each character of s is either 0 or 1.

Output
Print t integers, where the i-th integer is the answer to the i-th testcase (the minimum number of 0’s that you have to erase from s).

Example
inputCopy
3
010011
0
1111000
outputCopy
2
0
0
Note
In the first test case you have to delete the third and forth symbols from string 010011 (it turns into 0111).

题意:一个01串,让所有的1都连续在一起,问你要消除多少个0

思路:记录第一个1的位置,除去第一个1以外最后一个1的位置,以及1的个数,
这样 last-first+1 就是第一个1和最后一个1之间的区间长度,所有的1都在里面,减去1的个数 就是要删去的0的个数 当然 如果1的个数没有 或者只有一个 就直接输出0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define me(a,x) memset(a,x,sizeof a)
#define pb(a) push_back(a)
#define pa pair<int,int>
#define fi first
#define se second
int main()
{
    int t;
    cin>>t;
    while(t--)
    {

        string s;cin>>s;
        int len=s.size();
        int first=-1,last=-1;
        int one=0;
        for(int i=0;i<len;i++){

            if(first==-1)
            {
                if(s[i]=='1') first=i,one++;
            }
            else if(s[i]=='1') last=i,one++;
        }
        if(one<=1) puts("0");
        else cout<<last-first+1-one<<endl;
    }

    return 0;
}