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.
  • Else we do the following-

  • Check if the first two characters are identical. If yes, then insert ” * ” between them.
  • As we have now checked for identical characters at 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

ge*eks

Note:The recursive function in the above code is tail recursive as recursive call is the last thing executed by the function.



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.



Improved By : AnkitRai01, Ita_c