Heim > Backend-Entwicklung > C++ > 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
Freigeben: 2023-09-13 20:41:04
nach vorne
551 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

Ausgabe

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

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage