Given a string str, the task is to find the count of all the sub-strings of length four whose characters can be rearranged to form the word “clap”.
Examples:
Input: str = “clapc”
Output: 2
“clap” and “lapc” are the required sub-stringsInput: str = “abcd”
Output: 0
Approach: For every sub-string of length four, count the occurrences of the characters from the word “clap”. If every character has the occurrence exactly one in the sub-string then increment the count. Print the count in the end.
Below is the implementation of the above approach:
// CPP implementation of the approach #include<bits/stdc++.h> using namespace std;
// Function to return the count of // required occurrence int countOcc(string s)
{ // To store the count of occurrences
int cnt = 0;
// Check first four characters from ith position
for ( int i = 0; i < s.length() - 3; i++)
{
// Variables for counting the required characters
int c = 0, l = 0, a = 0, p = 0;
// Check the four contiguous characters which
// can be reordered to form 'clap'
for ( int j = i; j < i + 4; j++)
{
switch (s[j])
{
case 'c' :
c++;
break ;
case 'l' :
l++;
break ;
case 'a' :
a++;
break ;
case 'p' :
p++;
break ;
}
}
// If all four contiguous characters are present
// then increment cnt variable
if (c == 1 && l == 1 && a == 1 && p == 1)
cnt++;
}
return cnt;
} // Driver code int main()
{ string s = "clapc" ;
transform(s.begin(), s.end(), s.begin(), :: tolower );
cout << (countOcc(s));
} // This code is contributed by // Surendra_Gangwar |
// Java implementation of the approach class GFG {
// Function to return the count of
// required occurrence
static int countOcc(String s)
{
// To store the count of occurrences
int cnt = 0 ;
// Check first four characters from ith position
for ( int i = 0 ; i < s.length() - 3 ; i++) {
// Variables for counting the required characters
int c = 0 , l = 0 , a = 0 , p = 0 ;
// Check the four contiguous characters which
// can be reordered to form 'clap'
for ( int j = i; j < i + 4 ; j++) {
switch (s.charAt(j)) {
case 'c' :
c++;
break ;
case 'l' :
l++;
break ;
case 'a' :
a++;
break ;
case 'p' :
p++;
break ;
}
}
// If all four contiguous characters are present
// then increment cnt variable
if (c == 1 && l == 1 && a == 1 && p == 1 )
cnt++;
}
return cnt;
}
// Driver code
public static void main(String args[])
{
String s = "clapc" ;
System.out.print(countOcc(s.toLowerCase()));
}
} |
# Python3 implementation of the approach # Function to return the count of # required occurrence def countOcc(s):
# To store the count of occurrences
cnt = 0
# Check first four characters from ith position
for i in range ( 0 , len (s) - 3 ):
# Variables for counting the required characters
c, l, a, p = 0 , 0 , 0 , 0
# Check the four contiguous characters
# which can be reordered to form 'clap'
for j in range (i, i + 4 ):
if s[j] = = 'c' :
c + = 1
elif s[j] = = 'l' :
l + = 1
elif s[j] = = 'a' :
a + = 1
elif s[j] = = 'p' :
p + = 1
# If all four contiguous characters are
# present then increment cnt variable
if c = = 1 and l = = 1 and a = = 1 and p = = 1 :
cnt + = 1
return cnt
# Driver code if __name__ = = "__main__" :
s = "clapc"
print (countOcc(s.lower()))
# This code is contributed by Rituraj Jain |
// C# implementation of the approach using System;
class GFG
{ // Function to return the count of // required occurrence static int countOcc( string s)
{ // To store the count of occurrences
int cnt = 0;
// Check first four characters
// from ith position
for ( int i = 0; i < s.Length - 3; i++)
{
// Variables for counting the
// required characters
int c = 0, l = 0, a = 0, p = 0;
// Check the four contiguous characters
// which can be reordered to form 'clap'
for ( int j = i; j < i + 4; j++)
{
switch (s[j])
{
case 'c' :
c++;
break ;
case 'l' :
l++;
break ;
case 'a' :
a++;
break ;
case 'p' :
p++;
break ;
}
}
// If all four contiguous characters are
// present then increment cnt variable
if (c == 1 && l == 1 && a == 1 && p == 1)
cnt++;
}
return cnt;
} // Driver code public static void Main()
{ string s = "clapc" ;
Console.Write(countOcc(s.ToLower()));
} } // This code is contributed by Akanksha Rai |
<?php // PHP implementation of the approach // Function to return the count of // required occurrence function countOcc( $s )
{ // To store the count of occurrences
$cnt = 0;
// Check first four characters
// from ith position
for ( $i = 0; $i < strlen ( $s ) - 3; $i ++)
{
// Variables for counting the
// required characters
$c = 0; $l = 0; $a = 0; $p = 0;
// Check the four contiguous characters
// which can be reordered to form 'clap'
for ( $j = $i ; $j < $i + 4; $j ++)
{
switch ( $s [ $j ])
{
case 'c' :
$c ++;
break ;
case 'l' :
$l ++;
break ;
case 'a' :
$a ++;
break ;
case 'p' :
$p ++;
break ;
}
}
// If all four contiguous characters are present
// then increment cnt variable
if ( $c == 1 && $l == 1 &&
$a == 1 && $p == 1)
$cnt ++;
}
return $cnt ;
} // Driver code $s = "clapc" ;
echo countOcc( strtolower ( $s ));
// This code is contributed by Ryuga ?> |
<script> // Javascript implementation of the approach // Function to return the count of // required occurrence function countOcc(s)
{ // To store the count of occurrences
var cnt = 0;
// Check first four characters from ith position
for ( var i = 0; i < s.length - 3; i++)
{
// Variables for counting the required characters
var c = 0, l = 0, a = 0, p = 0;
// Check the four contiguous characters which
// can be reordered to form 'clap'
for ( var j = i; j < i + 4; j++)
{
switch (s[j])
{
case 'c' :
c++;
break ;
case 'l' :
l++;
break ;
case 'a' :
a++;
break ;
case 'p' :
p++;
break ;
}
}
// If all four contiguous characters are present
// then increment cnt variable
if (c == 1 && l == 1 && a == 1 && p == 1)
cnt++;
}
return cnt;
} // Driver code var s = "clapc" ;
s = s.toLowerCase(); document.write(countOcc(s)); </script> |
2
Time Complexity: O(n2)
Auxiliary Space: O(1)