You are given a string s. Each character is either 0 or 1.
You want all 1s in the string to form a contiguous subsegment. For example, if the string is 0, 1, 00111 or 01111100, then all ones (1) 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) zeroes(0) from the string. What is the minimum number of zeros (0) that you have to erase?
Input Format
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 Format
Print t integers, where the i-th integer is the answer to the i-th testcase (the minimum number of zeros(0) that you have to erase from s).
Example 1
Input
3 010011 0 1111000
Output
2 0 0
Explanation
In the first test case you have to delete the third and forth symbols from string 010011 (it turns into 0111).
Example 2
Input
1 010101
Output
2
Explanation
Need to remove zero at index 2 and index 4.
Constraints
1<=t<=10^4
`1<=s.length<=10^41
Solution of Remove Zeroes in java:–
import java.util.*; import java.lang.*; import java.io.*; public class Main { public static void main (String[] args) throws java.lang.Exception { //your code here Scanner sc=new Scanner(System.in); int t=sc.nextInt(); //number of testcases. String s=" "; for(int i=1;i<=t;i++) { s=sc.next(); char[] ch=s.toCharArray(); int count=0; int pt1=0; int pt2=0; for(int j=0;j<ch.length;j++){ ///searching for 1st "1" from the beginning if(ch[j]=='1'){ pt1=j; break; } } for(int j=ch.length-1;j>pt1;j--){ //searching for 1st "1" from the end if(ch[j]=='1'){ pt2=j; break; } } ///after searching for "1" from beginnig and end , ///then search for zeros in between them. for(int j=pt1;j<pt2;j++){ if(ch[j]=='0'){ count++; } } System.out.println(count); } }}
Add a Comment