Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Recursive program to insert a star between pair of identical characters

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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.
 


My Personal Notes arrow_drop_up
Last Updated : 13 Dec, 2022
Like Article
Save Article
Similar Reads
Related Tutorials