Count Substrings Starting And Ending With 1

PROBLEM :

Given a binary string, count number of substrings that start and end with 1. For example, if the input string is “00100101”, then there are three substrings “1001”, “100101” and “101”.

Input:
The first line contains T denoting the number of testcases. Then follows description of testcases.
Each case contains a string containing 0's and 1's.


Output:
For each test case, output a single line denoting number of substrings possible.

Constraints:
1<=T<=100
1<=Lenght of String<=100


Example:
Input:
1
10101

Output:
3
     
--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

#include<iostream>
using namespace std;
#include<string.h>
int Count_Substrings(char *) ;
int main()
 {
int t,count;
char str[100] ;
cin>>t ;
while(t--)
{
   cin>>str ;
   count=0 ;
   count=Count_Substrings(str) ;
   cout<<count<<endl ;
}
return 0;
}

int Count_Substrings(char *str)
{
    int count ,i,l,j ;
    l=strlen(str) ;
    count=0 ;
    for(i=0;i<l;i++)
    {
        if(str[i]=='1')
        {
            for(j=i+1;j<l;j++)
            {
                if(str[j]=='1')
                    count++ ;
            }
        }
    }
    return count ;
}

--------------------------------------------------------------------------------
BETTER SOLUTION :
--------------------------------------------------------------------------------

#include<iostream>
using namespace std;
#include<string.h>
int Count_Substrings(char *) ;
int main()
 {
int t,count;
char str[100] ;
cin>>t ;
while(t--)
{
   cin>>str ;
   count=0 ;
   count=Count_Substrings(str) ;
   cout<<count<<endl ;
}
return 0;
}

int Count_Substrings(char *str)
{
    int count,i,l ;
    l=strlen(str) ;
   
    count=0 ;
    for(i=0;i<l;i++)
    {
        if(str[i]=='1')
            count++ ;
    }
   
    return count*(count-1)/2 ;
}

---------------------------------------------------------------------------------

Comments