Count strings with consonants and vowels at alternate position

Given a string str. The task is to find all possible number of strings that can be obtained by replacing the “$” with alphabets in the given string.

Note: Alphabets should be placed in such a way that the string is always alternating in vowels and consonants, and the string must always start with a consonant. It is assumed that such a string is always possible, i.e. there is no need to care about the characters other than “$”.

Examples:

Input: str = "y$s"
Output: 5
$ can be replaced with any of the 5 vowels.
So, there can be 5 strings.

Input: str = "s$$e$"
Output: 2205


Approach: It is given that the string will start with a consonant. So, if ‘$’ is at even position(considering 0-based indexing) then there should be a consonant else there should be a vowel. Also, given that there is no need to care about the characters other than “$”, i.e., characters other than “$” are placed correctly in the string maintaining the alternating consonant and vowel sequence. Let us understand the problem with an example.

str = “s$$e$”
Here we have to find the number of ways to form a string with given constraints.

  • First occurence of $ is at 2nd position i.e. 1st index, so we can use 5 vowels.
  • Second occurence of $ is at 3rd position, so we can use 21 consonants.
  • Third occurence of $ is at 5th position, so we can use 21 consonants.

So, total number of ways to form above string is = 5*21*21 = 2205

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of above approach
#include <bits/stdc++.h>
  
using namespace std;
  
// Function to find the count of strings
int countStrings(string s)
{
    // Variable to store the final result
    long sum = 1;
  
    // Loop iterating through string
    for (int i = 0; i < s.size(); i++) {
  
        // If '$' is present at the even
        // position in the string
        if (i % 2 == 0 && s[i] == '$')
  
            //'sum' is multiplied by 21
            sum *= 21;
  
        // If '$' is present at the odd
        // position in the string
        else if (s[i] == '$')
  
            //'sum' is multiplied by 5
            sum *= 5;
    }
  
    return sum;
}
  
// Driver code
int main()
{
    // Let the string 'str' be s$$e$
    string str = "s$$e$";
  
    // Print result
    cout << countStrings(str) << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of above approach
  
import java.util.*;
import java.lang.*;
import java.io.*;
  
class GFG{
  
// Function to find the count of strings
static int countStrings(String s)
{
    // Variable to store the final result
    int sum = 1;
   
    // Loop iterating through string
    for (int i = 0; i < s.length(); i++) {
   
        // If '$' is present at the even
        // position in the string
        if (i % 2 == 0 && s.charAt(i) == '$')
   
            //'sum' is multiplied by 21
            sum *= 21;
   
        // If '$' is present at the odd
        // position in the string
        else if (s.charAt(i) == '$')
   
            //'sum' is multiplied by 5
            sum *= 5;
    }
   
    return sum;
}
   
// Driver code
public static void main(String args[])
{
    // Let the string 'str' be s$$e$
    String str = "s$$e$";
   
    // Print result
    System.out.println(countStrings(str));
}
}

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 implementation of above approach
  
# Function to find the count of strings
def countStrings(s):
      
    # Variable to store the final result
    sum = 1
  
    # Loop iterating through string
    for i in range(len(s)):
  
        # If '$' is present at the even
        # position in the string
        if (i % 2 == 0 and s[i] == '$'):
  
            #'sum' is multiplied by 21
            sum *= 21
  
        # If '$' is present at the odd
        # position in the string
        elif(s[i] == '$'):
  
            # 'sum' is multiplied by 5
            sum *= 5
  
    return sum
  
# Driver code
if __name__ == "__main__":
      
    # Let the string 'str' be s$$e$
    str = "s$$e$"
  
    # Print result
    print(countStrings(str))
      
# this code is contributed by ChitraNayal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of above approach
  
using System;
  
class GFG{
   
// Function to find the count of strings
static int countStrings(String s)
{
    // Variable to store the final result
    int sum = 1;
    
    // Loop iterating through string
    for (int i = 0; i < s.Length; i++) {
    
        // If '$' is present at the even
        // position in the string
        if (i % 2 == 0 && s[i] == '$')
    
            //'sum' is multiplied by 21
            sum *= 21;
    
        // If '$' is present at the odd
        // position in the string
        else if (s[i] == '$')
    
            //'sum' is multiplied by 5
            sum *= 5;
    }
    
    return sum;
}
    
// Driver code
public static void Main()
{
    // Let the string 'str' be s$$e$
    String str = "s$$e$";
    
    // Print result
    Console.WriteLine(countStrings(str));
}
}

chevron_right


Output:

2205


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.