Maison >développement back-end >C++ >En langage C, le nombre maximum de caractères entre deux caractères identiques dans une chaîne

En langage C, le nombre maximum de caractères entre deux caractères identiques dans une chaîne

王林
王林avant
2023-09-17 20:53:021292parcourir

En langage C, le nombre maximum de caractères entre deux caractères identiques dans une chaîne

Nous recevons une chaîne de lettres. Il y aura au moins deux caractères identiques dans le tableau. La tâche ici est de trouver le nombre maximum de caractères entre deux caractères identiques. S’il n’y a aucun doublon de caractères, -1 est renvoyé.

Input - String str = "abcdba"

Output - Le nombre maximum de caractères entre deux caractères identiques dans la chaîne - 4

Explication - Les seuls caractères répétés sont 'a' et 'b ', leur index est -

1. 2‘a’ first index 0 last 5 , characters in between 5-0-1=4
2. ‘b’ first index 1 last 4 , characters in between 4-1-1=2
   Maximum character in between repeating alphabets : 4

input - string str = "AbcAaBcbC"

output - le nombre maximum de caractères entre deux caractères identiques dans une chaîne - 5

explication - Les caractères répétés sont 'A', 'b', 'c' et leurs index sont les suivants :

1. ‘A’ first index 0 last 3 , characters in between 3-0-1=2
2. ‘b’ first index 1 last 7 , characters in between 7-1-1=5
3. ‘c’ first index 2 last 6 , characters in between 6-2-1=3
   Maximum character in between repeating alphabets : 5

Remarque - Si la chaîne d'entrée est "abcdefg", il n'y a pas de caractères répétés, donc la fonction retournera -1.

La méthode utilisée dans le programme suivant est la suivante

  • Nous utilisons un tableau de caractères pour stocker la chaîne Str[]

  • La fonction maxChars(char str[],int n) est utilisée pour calculer la différence entre deux lettres répétées Le nombre maximum de caractères.

  • On initialise la variable maxC à -1.

  • Parcourez le tableau depuis le début de la chaîne dans une boucle for.

  • Parcourez les caractères restants dans une boucle for imbriquée et recherchez les caractères en double (si str[i] == str[j]).

  • Si vrai, calcule la différence entre les caractères en soustrayant l'index (temp = j - i - 1).

  • Si cette valeur est la valeur maximale trouvée jusqu'à présent, stockez-la dans maxC.

  • Après avoir parcouru toute la chaîne, renvoyez maxC.

Exemple

Démonstration

#include <stdio.h>
#include <stdio.h>
#include <math.h>
int maxChars(char str[],int n){
   int size = n;
   int maxC = -1;
   for (int i = 0; i < n - 1; i++)
      for (int j = i + 1; j < n; j++)
         if (str[i] == str[j]){
            int temp=abs(j-i-1);
            maxC = maxC>temp?maxC:temp;
         }
   return maxC;
}
// Driver code
int main(){
   char Str[] = "AbcAaBcbC";
   printf("Maximum number of characters between any two same character in a string :%d",
   maxChars(Str,9) );
   return 0;
}

Sortie

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

Maximum number of characters between any two same character in a string : 5

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer