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: 1
ab, ab, aabb. All groups are validInput: str = “aabbabb”
Output: 0
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 <bits/stdc++.h>using namespace std;// Function to match whether there are always n consecutive b's// followed by n consecutive a's throughout the stringint 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 codeint main(){ string s = "bb"; if (matchPattern(s) == true) cout << "Yes"; else cout << "No"; return 0;} |
Java
// Java implementation of the above approachpublic class GFG{// Function to match whether there are always n consecutive b's// followed by n consecutive a's throughout the stringstatic 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 codepublic 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 stringdef 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 codes = "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 stringstatic 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 codepublic static void Main(){ string s = "bb"; if (matchPattern(s) == true) Console.Write("Yes"); else Console.Write("No");}} |
PHP
<?php//PHP implementation of the approach // Function to match whether there are always n consecutive b's // followed by n consecutive a's throughout the string function matchPattern($s) { $count = 0; $n = strlen($s); // Traverse through the string $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 $s = "bb"; if (matchPattern($s) == true) echo "Yes"; else echo "No"; // This code is contributed by ajit?> |
Javascript
<script> // Javascript implementation of // the above approach // Function to match whether there are // always n consecutive b's // followed by n consecutive a's // throughout the string function matchPattern(s) { let count = 0; let n = s.length; // Traverse through the string let 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; } let s = "bb"; if (matchPattern(s) == true) document.write("Yes"); else document.write("No"); </script> |
No
Complexity Analysis:
- Time Complexity : O( | s | ) ,where | s | is length of given string s.
- Space Complexity : O(1) ,as we are not using any extra space
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
