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

Rendre tous les caractères de la chaîne identiques en augmentant ou en diminuant la valeur ASCII minimale

王林
Libérer: 2023-08-26 12:53:12
avant
1323 Les gens l'ont consulté

Rendre tous les caractères de la chaîne identiques en augmentant ou en diminuant la valeur ASCII minimale

Le système ASCII (American Standard Code for Information Interchange) est souvent utilisé en programmation pour manipuler des caractères. Dans cet article, nous examinerons un problème intéressant dans lequel nous devons rendre tous les caractères d'une chaîne identiques par le nombre minimum. d'incréments ou de décréments de valeurs ASCII de caractères. Nous fournirons une explication détaillée du problème, proposerons une solution efficace en C++ et analyserons sa complexité.

Comprendre le problème

Étant donné une chaîne composée de lettres anglaises minuscules, notre tâche est de rendre tous les caractères de la chaîne identiques en modifiant leurs valeurs ASCII. Le problème est que nous devons le faire en utilisant le plus petit nombre de modifications.

Nous pouvons opérer en incrémentant ou en décrémentant la valeur ASCII d'un caractère, chaque incrément ou décrément compte comme une opération. Le but est de trouver le nombre minimum d’opérations nécessaires pour que tous les caractères d’une chaîne soient identiques.

Méthode

Pour résoudre ce problème, nous devons trouver le caractère qui apparaît le plus fréquemment dans la chaîne. La raison en est qu'il faudrait moins d'opérations pour remplacer tous les autres caractères par ce caractère le plus courant.

Tout d’abord, nous compterons la fréquence de chaque caractère de la chaîne. Ensuite nous trouverons les caractères les plus fréquents. Le nombre d'opérations nécessaires pour rendre tous les caractères identiques à ce caractère sera la somme des différences entre les valeurs ASCII des caractères les plus fréquents et les valeurs ASCII de tous les autres caractères.

Solution C++

La traduction chinoise de

Exemple

est :

Exemple

Ce qui suit est le code C++ pour résoudre le problème -

#include<bits/stdc++.h>
using namespace std;

int minOperations(string str) {
   int freq[26] = {0};
   
   for (char c : str) {
      freq[c - 'a']++;
   }
   
   int max_freq = *max_element(freq, freq+26);
   int total_chars = str.length();
   return total_chars - max_freq;
}

int main() {
   string str;
   cout << "Enter the string: ";
   cin >> str;
   cout << "Minimum operations: " << minOperations(str) << endl;
   return 0;
}
Copier après la connexion

Sortie

Enter the string: Minimum operations: 0
Copier après la connexion

Explication du code

Considérez la chaîne "abcdd". Le caractère "d" apparaît deux fois, plus que tout autre caractère. Par conséquent, nous devrions remplacer tous les autres caractères par "d". La valeur ASCII de "d" est 100. Les valeurs ASCII. de « a », « b » et « c » sont respectivement 97, 98 et 99. Ainsi, le nombre minimum d’opérations sera (100-97) + (100-98) + (100-99) = 3 + 2 + 1 = 6. Cependant, comme nous devons minimiser le nombre d'opérations, nous décrémenterons plutôt les valeurs ASCII de 'a', 'b' et 'c'. Dans ce cas, le nombre minimum. des opérations sera (97-97) + (98-97) + (99-97) = 0 + 1 + 2 = 3.

Conclusion

Dans cet article, nous avons vu comment résoudre des problèmes uniques impliquant la manipulation de valeurs ASCII et de chaînes en C++.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!