Maison > développement back-end > C++ > Vérifie si les caractères d'une chaîne peuvent devenir non décroissants en remplaçant '_'

Vérifie si les caractères d'une chaîne peuvent devenir non décroissants en remplaçant '_'

PHPz
Libérer: 2023-09-13 20:41:04
avant
555 Les gens l'ont consulté

Vérifie si les caractères dune chaîne peuvent devenir non décroissants en remplaçant _

Dans cet article, nous aborderons un problème intéressant dans le domaine de la manipulation de chaînes : comment vérifier si les caractères d'une chaîne donnée peuvent être changés dans un ordre non décroissant en remplaçant le caractère "?" Cette question vous offre une excellente opportunité de mettre en pratique vos compétences en manipulation de chaînes et en vérification de conditions en C++.

Énoncé du problème

Étant donné une chaîne composée de caractères alphabétiques et de points d'interrogation (?), déterminez si les caractères peuvent être rendus non décroissants en remplaçant les « ? ».

La condition non décroissante signifie que pour deux caractères adjacents dans la chaîne, la valeur ASCII du deuxième caractère n'est pas inférieure à la valeur ASCII du premier.

Méthode

Nous utiliserons une méthode simple pour résoudre ce problème −

  • Parcourez la chaîne de gauche à droite.

  • Si un '?' est rencontré, remplacez-le par le caractère qui l'a précédé (sauf s'il s'agit du premier caractère, auquel cas remplacez-le par 'a').

  • Enfin, vérifiez si la chaîne résultante n'est pas décroissante.

Exemple

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

bool checkNonDecreasing(string s) {
   int n = s.size();
   if (s[0] == '?') s[0] = 'a';
   for (int i = 1; i < n; i++) {
      if (s[i] == '?') s[i] = s[i-1];
      if (s[i] < s[i-1]) return false;
   }
   return true;
}
int main() {
   string s = "ac?b";
   bool result = checkNonDecreasing(s);
   if(result)
      cout << "Yes, the string can be made non-decreasing by replacing '?'s.\n";
   else
      cout << "No, the string cannot be made non-decreasing by replacing '?'s.\n";
   return 0;
}
Copier après la connexion

Sortie

No, the string cannot be made non-decreasing by replacing '?'s.
Copier après la connexion

La fonction checkNonDecreasing prend en entrée une chaîne s et renvoie une valeur booléenne indiquant si les caractères de la chaîne peuvent être rendus non décroissants en remplaçant les '?'.

Dans ce cas de test, la chaîne d'entrée est "ac?b". La fonction checkNonDecreasing est appelée avec cette chaîne comme argument, et le résultat est une valeur booléenne qui est imprimée.

Conclusion

Vérifier si un caractère dans une chaîne peut être rendu non décroissant en remplaçant "?" est une question qui teste votre compréhension des opérations sur les chaînes et des valeurs ASCII. En pratiquant des questions comme celle-ci, vous pouvez renforcer votre capacité à gérer les 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!

Étiquettes associées:
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