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 occurrence of $ is at 2nd position i.e. 1st index, so we can use 5 vowels.
- Second occurrence of $ is at 3rd position, so we can use 21 consonants.
- Third occurrence 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++
// 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; } |
Java
// 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)); } } |
Python 3
# 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 |
C#
// 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)); } } |
PHP
<?php // PHP implementation of above approach // Function to find the count of strings function countStrings( $s ) { // Variable to store the // final result $sum = 1; // Loop iterating through string for ( $i = 0; $i < strlen ( $s ); $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 // Let the string 'str' be s$$e$ $str = "s\$\$e\$" ; // Print result echo countStrings( $str ); // This code is contributed by Ryuga ?> |
Javascript
<script> // javascript implementation of above approach // Function to find the count of strings function countStrings( s) { // Variable to store the final result let sum = 1; // Loop iterating through string for (let 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 // Let the string 'str' be s$$e$ let str = "s$$e$" ; // Print result document.write(countStrings(str)); // This code is contributed by gauravrajput1 </script> |
2205
Time complexity: O(n) where n is length of given string
Auxiliary space: O(1)