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é.
É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.
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.
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; }
Enter the string: Minimum operations: 0
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.
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!