# Check If every group of a’s is followed by a group of b’s of same length

• Last Updated : 28 Jul, 2022

Given string str, the task is to check whether every group of consecutive a’s is followed by a group of consecutive b’s of the same length. If the condition is true for every group then print 1 else print 0.
Examples:

Input: str = “ababaabb”
Output:
ab, ab, aabb. All groups are valid
Input: str = “aabbabb”
Output:
aabb, abb (A single ‘a’ followed by 2 ‘b’)

Approach:

• For every a in the string increment the count.
• Starting from the first b, decrement the count for every b.
• If at the end of the above cycle, count != 0 then return false.
• Else repeat the first two steps for the rest of the string.
• Return true if the condition is satisfied for all the cycles else print 0.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to match whether there are always n consecutive b's``// followed by n consecutive a's throughout the string``int` `matchPattern(string s)``{``    ``int` `count = 0;``    ``int` `n = s.length();` `    ``// Traverse through the string``    ``int` `i = 0;``    ``while` `(i < n) {` `        ``// Count a's in current segment``        ``while` `(i < n && s[i] == ``'a'``) {``            ``count++;``            ``i++;``        ``}` `        ``// Count b's in current segment``        ``while` `(i < n && s[i] == ``'b'``) {``            ``count--;``            ``i++;``        ``}` `        ``// If both counts are not same.``        ``if` `(count != 0)``            ``return` `false``;``    ``}` `    ``return` `true``;``}` `// Driver code``int` `main()``{``    ``string s = ``"bb"``;``    ``if` `(matchPattern(s) == ``true``)``        ``cout << ``"Yes"``;``    ``else``        ``cout << ``"No"``;``    ``return` `0;``}`

## Java

 `// Java implementation of the above approach` `public` `class` `GFG{` `// Function to match whether there are always n consecutive b's``// followed by n consecutive a's throughout the string``static` `boolean` `matchPattern(String s)``{``    ``int` `count = ``0``;``    ``int` `n = s.length();` `    ``// Traverse through the string``    ``int` `i = ``0``;``    ``while` `(i < n) {` `        ``// Count a's in current segment``        ``while` `(i < n && s.charAt(i) == ``'a'``) {``            ``count++;``            ``i++;``        ``}` `        ``// Count b's in current segment``        ``while` `(i < n && s.charAt(i) == ``'b'``) {``            ``count--;``            ``i++;``        ``}` `        ``// If both counts are not same.``        ``if` `(count != ``0``)``            ``return` `false``;``    ``}` `    ``return` `true``;``}` `// Driver code``public` `static` `void` `main(String []args)``{``    ``String s = ``"bb"``;``    ``if` `(matchPattern(s) == ``true``)``        ``System.out.println(``"Yes"``);``    ``else``        ``System.out.println(``"No"``);``}` `// This code is contributed by Ryuga``}`

## Python3

 `# Python 3 implementation of the approach` `# Function to match whether there are``# always n consecutive b's followed by``# n consecutive a's throughout the string``def` `matchPattern(s):` `    ``count ``=` `0``;``    ``n ``=` `len``(s);` `    ``# Traverse through the string``    ``i ``=` `0``;``    ``while` `(i < n) :` `        ``# Count a's in current segment``        ``while` `(i < n ``and` `s[i] ``=``=` `'a'``):` `            ``count ``+``=` `1` `;``            ``i ``=``+` `1``;` `        ``# Count b's in current segment``        ``while` `(i < n ``and` `s[i] ``=``=` `'b'``):``            ``count ``-``=` `1` `;``            ``i ``+``=` `1``;``    ` `        ``# If both counts are not same.``        ``if` `(count !``=` `0``):``            ``return` `False``;` `    ``return` `True``;` `# Driver code``s ``=` `"bb"``;``if` `(matchPattern(s) ``=``=` `True``):``    ``print``(``"Yes"``);``else``:``    ``print``(``"No"``);` `# This code is contributed``# by Akanksha Rai`

## C#

 `// C# implementation of the above approach`` ` `using` `System;``public` `class` `GFG{`` ` `// Function to match whether there are always n consecutive b's``// followed by n consecutive a's throughout the string``static` `bool` `matchPattern(``string` `s)``{``    ``int` `count = 0;``    ``int` `n = s.Length;`` ` `    ``// Traverse through the string``    ``int` `i = 0;``    ``while` `(i < n) {`` ` `        ``// Count a's in current segment``        ``while` `(i < n && s[i] == ``'a'``) {``            ``count++;``            ``i++;``        ``}`` ` `        ``// Count b's in current segment``        ``while` `(i < n && s[i] == ``'b'``) {``            ``count--;``            ``i++;``        ``}`` ` `        ``// If both counts are not same.``        ``if` `(count != 0)``            ``return` `false``;``    ``}`` ` `    ``return` `true``;``}`` ` `// Driver code``public` `static` `void` `Main()``{``    ``string` `s = ``"bb"``;``    ``if` `(matchPattern(s) == ``true``)``        ``Console.Write(``"Yes"``);``    ``else``        ``Console.Write(``"No"``);``}` `}`

## PHP

 ``

## Javascript

 ``

Output:

`No`

Time Complexity : O( | s | ) ,where | s | is length of given string s.

Space Complexity : O(1) ,as we are not using any extra space

My Personal Notes arrow_drop_up