Par de caso: programa en C ++ para entrar en ‘*’ entre dos caracteres idénticos en una cadena

Aquí, vamos a implementar un programa de C ++ que entrará asterisco (*) entre dos caracteres idénticos en una cadena .

Dada una cadena, calcular de forma recursiva una nueva cadena donde caracteres idénticos que son adyacentes en la cadena original son separados uno de otro por un “*” .

de entrada de muestra 1: “Hola”

Salida de muestra 1: “hel * lo”

muestra de entrada 2: “xxyy”

Muestra Producto 2: “x * xy * y”

entrada Muestra 3: “aaaa”

Muestra Producto 3: “a * a * a * a”

Explicación:

En esta pregunta, tenemos para añadir una estrella entre cualquier par de cartas mismos. Esto se podría lograr fácilmente utilizando la recursividad. Cuando el índice de inicio es igual a ( start + 1 ) índice, lo cambiamos todas las cartas de ( start + 1 ) por 1 en el lado derecho y en ( start + 1 ), vamos a añadir una estrella.

Algoritmo:

  1. PASO 1: Declaración de una función recursiva pairStar con parámetros (class arr [], iniciar class)
  2. PASO 2: Base class: si (arr [inicio ] == ‘ 0’) class;
  3. PASO 3: si (== comenzar comenzar 1)
    Shift todas las cartas de inicio + 1 al lado derecho 1.
  4. PASO 4: Introduzca ‘*’ en ( iniciar 1) en arr .

Ejemplo:

    Input = "aaa"
First Traversal: "aa*a"
Second Traversal: "a*a*a"

programa C ++:

#include <iostream>
using namespace std;
//Function To find length
int length(char arr[]){
int len = 0;
for(int i =0;arr[i]!='_CP1_';i++){
len++;
}
return len;
}
//Recursive Function
void pairStar(char arr[],int start){
//Base Case: Reached End Of String
if(arr[start]=='_CP1_'){
return;
}
//Recursive Call
pairStar(arr,start+1);
if(arr[start] == arr[start+1]){
int l = length(arr);
//Extending the string
arr[l+1] = '_CP1_';
int i;
//To shift the letters by 1
for(i = l-1;i>=start +1;i--){
arr[i+1] = arr [i];
}
//Entering * in between
arr[start+1] = '*';
}
}
//Main
int main(){
char input[50];
cout<<"Enter Input"<<endl;
cin>> input;
pairStar(input,0); //Calling the function
cout<<"Modified Output"<<endl;
cout<<input<<endl;
return 0;
}

salida

Enter Input
hello
Modified Output
hel*lo


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *