Maison  >  Article  >  développement back-end  >  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
PHPzavant
2023-09-13 20:41:04458parcourir

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;
}

Sortie

No, the string cannot be made non-decreasing by replacing '?'s.

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!

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