Recursive program to insert a star between pair of identical characters
Given a string with repeated characters, we have to insert a star i.e.” * “ between pair of adjacent identical characters using recursion.
Examples:
Input : aabb Output : a*ab*b Input : xxxy Output : x*x*xy
Approach:
- If there is an empty string then simply return. This forms our base condition.
- Check if the first two characters are identical. If yes, then insert ” * ” between them.
- As we have now checked for identical characters at the first two positions of the string so we now make a recursive call without the first character of the string.
The above approach has been implemented below:
C++
// Recursive CPP program to insert * between // two consecutive same characters. #include <iostream> using namespace std; // Function to insert * at desired position void pairStar(string& input, string& output, int i = 0) { // Append current character output = output + input[i]; // If we reached last character if (i == input.length() - 1) return ; // If next character is same, // append '*' if (input[i] == input[i + 1]) output = output + '*' ; pairStar(input, output, i+1); } // Driver code int main() { string input = "geeks" , output = "" ; pairStar(input, output); cout << output << endl; return 0; } |
Java
// Recursive Java program to insert * between // two consecutive same characters. class GFG { static String output= "" ; // Function to insert * at desired position static void pairStar(String input, int i) { // Append current character output = output + input.charAt(i); // If we reached last character if (i == input.length() - 1 ) return ; // If next character is same, // append '*' if (input.charAt(i) == input.charAt(i+ 1 )) output = output + '*' ; pairStar(input, i+ 1 ); } // Driver code public static void main(String[] args) { String input = "geeks" ; pairStar(input, 0 ); System.out.println(output); } } // This code is contributed by Princi Singh |
Python3
# Recursive CPP program to insert * between # two consecutive same characters. # Function to insert * at desired position def pairStar( Input , Output, i = 0 ) : # Append current character Output = Output + Input [i] # If we reached last character if (i = = len ( Input ) - 1 ) : print (Output) return ; # If next character is same, # append '*' if ( Input [i] = = Input [i + 1 ]) : Output = Output + '*' ; pairStar( Input , Output, i + 1 ); # Driver code if __name__ = = "__main__" : Input = "geeks" Output = "" pairStar( Input , Output); # This code is contributed by Ryuga |
C#
// Recursive C# program to insert * between // two consecutive same characters. using System; class GFG { static String output= "" ; // Function to insert * at desired position static void pairStar(String input, int i) { // Append current character output = output + input[i]; // If we reached last character if (i == input.Length - 1) return ; // If next character is same, // append '*' if (input[i] == input[i+1]) output = output + '*' ; pairStar(input, i+1); } // Driver code public static void Main(String[] args) { String input = "geeks" ; pairStar(input,0); Console.WriteLine(output); } } /* This code is contributed by PrinciRaj1992 */ |
PHP
<?php // Recursive PHP program to insert * between // two consecutive same characters. // Function to insert * at desired position function pairStar(& $input , & $output , $i = 0) { // Append current character $output = $output . $input [ $i ]; // If we reached last character if ( $i == strlen ( $input ) - 1) return ; // If next character is same, // append '*' if ( $input [ $i ] == $input [ $i + 1]) $output = $output . '*' ; pairStar( $input , $output , $i +1); } // Driver code $input = "geeks" ; $output = "" ; pairStar( $input , $output ); echo $output ; return 0; // This code is contributed by ChitraNayal ?> |
Javascript
<script> // Recursive Javascript program to insert * between // two consecutive same characters. let output= "" ; // Function to insert * at desired position function pairStar(input,i) { // Append current character output = output + input[i]; // If we reached last character if (i == input.length - 1) return ; // If next character is same, // append '*' if (input[i] == input[i+1]) output = output + '*' ; pairStar(input, i+1); } // Driver code let input = "geeks" ; pairStar(input,0); document.write(output); // This code is contributed by avanitrachhadiya2155 </script> |
Output
ge*eks
Time Complexity: O(n), where n is the length of the given string.
Auxiliary Space: O(n), where n is the length of the given string.
Note: The recursive function in the above code is tail recursive as the recursive call is the last thing executed by the function.
Please Login to comment...