Count of ordered triplets (R, G, B) in a given original string - GeeksforGeeks

27 Dec, 2021
Given a string S of size N, the task is to count all possible triplets in the given string which consists of only 3 colours (R)Red, (G)Green and (B)Blue in the order (R, G, B).
Examples: 
Input: S = “RRGB” Output: 2 Explanation: There are two triplets of RGB in the given string: 
R at index 0, G at index 2 and B at index 3 forms one triplet of RGB.
R at index 1, G at index 2 and B at index 3 forms the second triplet of RGB.
Input: S = “GBR” Output: 0 Explanation: No triplets exists.  
Approach: 
Count the number of B(Blue) in the given string and store the value in a Blue_Count variable.Initialize Red_Count = 0.Iterate over all characters of string from left to right.If the current character is (R)red, increase the Red_Count.If current character is (B)blue, decrease Blue_Count.If the current character is G(green) add Red_Count * Blue_Count in the result.
Count the number of B(Blue) in the given string and store the value in a Blue_Count variable.
Initialize Red_Count = 0.
Iterate over all characters of string from left to right.
If the current character is (R)red, increase the Red_Count.
If current character is (B)blue, decrease Blue_Count.
If the current character is G(green) add Red_Count * Blue_Count in the result.
Below is the implementation of the above approach.  
C++
Java
Python3
C#
Javascript
// C++ code for the above program #include <bits/stdc++.h>using namespace std; // function to count the// ordered triplets (R, G, B)int countTriplets(string color){    int result = 0, Blue_Count = 0;    int Red_Count = 0;     // count the B(blue) colour    for (char c : color) {        if (c == 'B')            Blue_Count++;    }     for (char c : color) {        if (c == 'B')            Blue_Count--;        if (c == 'R')            Red_Count++;        if (c == 'G')            result += Red_Count * Blue_Count;    }    return result;} // Driver programint main(){    string color = "RRGGBBRGGBB";    cout << countTriplets(color);    return 0;}
// Java code for the above programclass GFG{         // function to count the// ordered triplets (R, G, B)static int countTriplets(String color){    int result = 0, Blue_Count = 0;    int Red_Count = 0;    int len = color.length();    int i;         // count the B(blue) colour    for (i = 0; i < len ; i++)    {        if (color.charAt(i) == 'B')            Blue_Count++;    }     for (i = 0; i < len ; i++)    {        if (color.charAt(i) == 'B')            Blue_Count--;        if (color.charAt(i) == 'R')            Red_Count++;        if (color.charAt(i) == 'G')            result += Red_Count * Blue_Count;    }    return result;} // Driver Codepublic static void main (String[] args){    String color = "RRGGBBRGGBB";    System.out.println(countTriplets(color));} } // This code is contributed by AnkitRai01
# Python3 code for the above program # function to count the# ordered triplets (R, G, B)def countTriplets(color) :     result = 0; Blue_Count = 0;    Red_Count = 0;     # count the B(blue) colour    for c in color :        if (c == 'B') :            Blue_Count += 1;     for c in color :        if (c == 'B') :            Blue_Count -= 1;                     if (c == 'R') :            Red_Count += 1;                     if (c == 'G') :            result += Red_Count * Blue_Count;         return result; # Driver Codeif __name__ == "__main__" :     color = "RRGGBBRGGBB";    print(countTriplets(color)); # This code is contributed by AnkitRai01
// C# code for the above programusing System;class GFG{         // function to count the// ordered triplets (R, G, B)static int countTriplets(String color){    int result = 0, Blue_Count = 0;    int Red_Count = 0;    int len = color.Length;    int i;     // count the B(blue) colour    for (i = 0; i < len ; i++)    {        if (color[i] == 'B')            Blue_Count++;    }     for (i = 0; i < len ; i++)    {        if (color[i] == 'B')            Blue_Count--;        if (color[i] == 'R')            Red_Count++;        if (color[i] == 'G')            result += Red_Count * Blue_Count;    }    return result;} // Driver Codepublic static void Main(string[] args){    string color = "RRGGBBRGGBB";    Console.WriteLine(countTriplets(color));}} // This code is contributed by AnkitRai01
<script> // Javascript code for the above program // function to count the// ordered triplets (R, G, B)function countTriplets(color){    var result = 0, Blue_Count = 0;    var Red_Count = 0;     var data = color.split('');     // count the B(blue) colour    for (var i=0;i<data.length;i++)    {        if (data[i] == 'B')            Blue_Count++;    }     for (var i=0;i<data.length;i++){        if (data[i] == 'B')            Blue_Count--;        if (data[i] == 'R')            Red_Count++;        if (data[i] == 'G')            result += Red_Count * Blue_Count;    }    return result;} // Driver programvar color = "RRGGBBRGGBB";document.write( countTriplets(color)); </script>
28
 
Time Complexity: O(N) Auxiliary Space Complexity: O(1) 
ankthon
nidhi_biet
rrrtnx
nnr223442
frequency-counting
Mathematical
School Programming
Searching
Strings
Searching
Strings
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Program to find sum of elements in a given array
Program for factorial of a number
Python Dictionary
Arrays in C/C++
Inheritance in C++
Reverse a string in Java
Interfaces in Java