Skip to main content

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:
filter_none
edit
play_arrow
brightness_4
// 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;
}
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.

Comments

Popular posts from this blog

Area of circle and use of #define

 To calculate the area and circumference of a circle with given radius. Get to know the ' #define'  directive. The code: -------------------------------------------- #include<stdio.h> #define PI 3.14159       //defining PI value main() {     float R,C,A;     printf("Give the radius of circle \nR= ");       scanf("%f",&R);     //scanning radius     C=2*PI*R;       //calculating circumference     A=PI*R*R;        //calculating area     printf("Circumference=%f    Area=%f\n",C,A); } ---------------------------------------------      First of all compile and run this program and see it works. Now notice that in the very second line of code I wrote a statement " #define PI 3.14159 " and further in the formulas for calculating area a...

C Program to find the Average of numbers

Here we will write two C programs to find the average of two numbers(entered by user). Example 1: Program to find the average of two numbers #include <stdio.h> int main () { int num1 , num2 ; float avg ; printf ( "Enter first number: " ); scanf ( "%d" ,& num1 ); printf ( "Enter second number: " ); scanf ( "%d" ,& num2 ); avg = ( float )( num1 + num2 )/ 2 ; //%.2f is used for displaying output upto two decimal places printf ( "Average of %d and %d is: %.2f" , num1 , num2 , avg ); return 0 ; } Output: Enter first number : 12 Enter second number : 13 Average of 12 and 13 is : 12.50 Example 2: Program to find the average using function In this program, we have created a user defined function average() for the calculation of average. The numbers entered by user are passed to this function during function call. #include <stdio.h> floa...