Maison > développement back-end > C++ > le corps du texte

Réorganiser la chaîne pour maximiser le nombre de sous-chaînes palindromiques en C++

PHPz
Libérer: 2023-09-13 22:29:02
avant
871 Les gens l'ont consulté

Réorganiser la chaîne pour maximiser le nombre de sous-chaînes palindromiques en C++

Nous obtenons une chaîne "str" ​​​​de n'importe quelle longueur donnée. La tâche consiste à réorganiser les caractères de telle manière que, sans ajouter ni supprimer de caractères dans la chaîne d'entrée donnée, la plus grande sous-chaîne devienne une chaîne palindrome. Une chaîne palindrome est une chaîne de caractères disposés de telle manière qu’ils sonnent de la même manière du début à la fin.

Examinons différents scénarios d'entrée et de sortie pour cette situation -

input− string str = "itnin"

output− Réorganiser la chaîne pour maximiser le nombre de sous-chaînes palindromiques est : iinnt.

Explication- Nous obtenons une variable de type chaîne, disons str. Nous allons maintenant réorganiser les caractères de la chaîne d'entrée pour en faire une chaîne palindrome maximale et renvoyer "NON POSSIBLE" si cela n'est pas possible. Par conséquent, la sortie donnée par la chaîne d’entrée est « iinnt ».

Input− string str = "abaaaabb"

Output − Réorganiser la chaîne pour maximiser le nombre de sous-chaînes palindromiques est : aaaaabbb.

Explication - Nous donnons une variable de type chaîne, telle que str. Nous allons maintenant réorganiser les caractères de la chaîne d'entrée pour en faire une chaîne palindrome maximale et renvoyer "NON POSSIBLE" si cela n'est pas possible. Ainsi, la sortie donnée par la chaîne d'entrée est aaaaabbb'

La méthode utilisée dans le programme ci-dessous est la suivante

  • Entrer une variable de chaîne Supposons que vous saisissiez str, calculiez la taille de la chaîne et la stockiez dans une variable appelée longueur.

  • Passez les données à la fonction Rearr_string(str, length).

  • À l'intérieur de la fonction Rearr_string(str, length)

    • déclarez un tableau de type entier de taille 26, dites arr[26] et initialisez-le avec 0.

    • Déclarez une variable temporaire "temp" de type chaîne.

    • Commencez à boucler FOR de i à 0 jusqu'à ce que i soit inférieur à la longueur. Dans la boucle, définissez arr[str[i] - 'a']++.

    • Commencez à boucler FOR de i à 0 jusqu'à ce que i soit inférieur à 26. À l'intérieur de la boucle, démarrez une autre boucle FOR de j à 0 jusqu'à ce que j soit inférieur à arr[i]. À l'intérieur de la boucle, définissez temp sur temp + (char)(97 + i).

    • Temp. de retour.

  • Imprimez les résultats.

Exemple

#include <bits/stdc++.h>
using namespace std;
string Rearr_string(string str, int length){
   int arr[26] = { 0 };
   string temp = "";
   for(int i = 0; i < length; i++){
      arr[str[i] - &#39;a&#39;]++;
   }
   for(int i = 0; i < 26; i++){
      for(int j = 0; j < arr[i]; j++){
         temp = temp + (char)(97 + i);
      }
   }
   return temp;
}
int main(){
   string str = "itinn";
   int length = str.length();
   cout<<"Rearrangement of the string to maximize the number of palindromic substrings is: "<<Rearr_string(str, length);
   return 0;
}
Copier après la connexion

Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

Rearrangement of the string to maximize the number of palindromic substrings is: iinnt
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal