Heim  >  Artikel  >  Backend-Entwicklung  >  Prüft, ob die Zeichen einer Zeichenfolge durch Ersetzen von „_“ nicht abnehmend werden können.

Prüft, ob die Zeichen einer Zeichenfolge durch Ersetzen von „_“ nicht abnehmend werden können.

PHPz
PHPznach vorne
2023-09-13 20:41:04495Durchsuche

Prüft, ob die Zeichen einer Zeichenfolge durch Ersetzen von „_“ nicht abnehmend werden können.

In diesem Artikel befassen wir uns mit einem interessanten Problem im Bereich der Zeichenfolgenmanipulation: Wie überprüft man, ob die Zeichen einer bestimmten Zeichenfolge durch Ersetzen des Zeichens „?“ in nicht absteigende Reihenfolge geändert werden können? Diese Frage bietet Ihnen eine hervorragende Gelegenheit, Ihre Fähigkeiten zur String-Manipulation und Bedingungsprüfung in C++ zu üben.

Problemstellung

Bestimmen Sie anhand einer Zeichenfolge, die aus alphabetischen Zeichen und Fragezeichen (?) besteht, ob die Zeichen durch Ersetzen der „?“ nicht absteigend gemacht werden können.

Die nicht abnehmende Bedingung bedeutet, dass für alle zwei benachbarten Zeichen in der Zeichenfolge der ASCII-Wert des zweiten Zeichens nicht kleiner ist als der ASCII-Wert des ersten.

Methode

Wir werden eine einfache Methode verwenden, um dieses Problem zu lösen −

  • Durchlaufen Sie die Zeichenfolge von links nach rechts.

  • Wenn ein „?“ vorkommt, ersetzen Sie es durch das davorstehende Zeichen (es sei denn, es ist das erste Zeichen; in diesem Fall ersetzen Sie es durch „a“).

  • Überprüfen Sie abschließend, ob die resultierende Zeichenfolge nicht abnimmt.

Beispiel

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

Ausgabe

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

Die checkNonDecreasing-Funktion nimmt als Eingabe eine Zeichenfolge s und gibt einen booleschen Wert zurück, der angibt, ob die Zeichen der Zeichenfolge durch Ersetzen von „?“ nicht absteigend gemacht werden können.

In diesem Testfall ist die Eingabezeichenfolge „ac?b“. Die checkNonDecreasing-Funktion wird mit dieser Zeichenfolge als Argument aufgerufen und das Ergebnis ist ein boolescher Wert, der ausgedruckt wird.

Fazit

Die Prüfung, ob ein Zeichen in einer Zeichenfolge durch Ersetzen von „?“ nicht abnehmend gemacht werden kann, ist eine Frage, die Ihr Verständnis von Zeichenfolgenoperationen und ASCII-Werten auf die Probe stellt. Durch das Üben solcher Fragen können Sie Ihre Fähigkeiten im Umgang mit Zeichenfolgen in C++ stärken.

Das obige ist der detaillierte Inhalt vonPrüft, ob die Zeichen einer Zeichenfolge durch Ersetzen von „_“ nicht abnehmend werden können.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen