Heim >Backend-Entwicklung >C++ >Kehren Sie die Zeichenfolge entsprechend der Anzahl der Wörter um

Kehren Sie die Zeichenfolge entsprechend der Anzahl der Wörter um

WBOY
WBOYnach vorne
2023-09-03 15:09:06972Durchsuche

Kehren Sie die Zeichenfolge entsprechend der Anzahl der Wörter um

String-Manipulation ist eine wesentliche Fähigkeit in der Programmierung, da sie uns dabei hilft, Textdaten effizient zu verarbeiten und zu analysieren. C++ bietet einen umfangreichen Satz an String-Manipulationsfunktionen und -Objekten, die die Arbeit mit Textdaten erleichtern.

In diesem Artikel besprechen wir, wie man eine Zeichenfolge entsprechend der Anzahl der Wörter in C++ umkehrt.

Methode

Ansatz 1 – Verwendung von Stringstreams und Vektoren

Methode 2 – Verwendung von Teilstring- und String-Manipulationsfunktionen

Syntax

String-Objekte in C++: Die Klasse std::string ist Teil der C++-Standardbibliothek und bietet verschiedene Funktionen zur String-Manipulation.

String-Manipulationsfunktionen: Zu den gängigen String-Manipulationsfunktionen in C++ gehören length(), substr(), find(), erase() und replacement().

std::string reverseStringByWords(const std::string& input) {}
std::reverse(words.begin(), words.end());

Ansatz 1:- Verwendung von Stringstreams und Vektoren

Dieser im Code verwendete Ansatz beinhaltet die Umwandlung der Eingabezeichenfolge in eine Folge von Wörtern mithilfe eines Stringstream-Objekts. Die Wörter werden dann einzeln aus dem Stream extrahiert und in einer Sammlung von Zeichenfolgen gespeichert, die durch einen Vektor dargestellt werden.

Anschließend wird die Sammlung von Wörtern mithilfe der Umkehrfunktion aus der Algorithmusbibliothek umgekehrt. Die umgekehrten Wörter werden dann zusammengefügt, um die endgültige Ausgabezeichenfolge zu bilden, wobei nach jedem Wort außer dem letzten ein Leerzeichen angehängt wird.

Algorithmus

  • Starten

  • Eingabezeichenfolge abrufen.

  • Erstellen Sie einen Stringstream aus der Eingabezeichenfolge.

  • Initialisieren Sie einen leeren Vektor, um Wörter zu speichern.

  • Wörter iterativ durch Stringstream extrahieren.

  • Extrahieren Sie ein Wort aus dem Stringstream.

  • Schieben Sie das extrahierte Wort in den Vektor.

  • Kehren Sie den Vektor um, der die Wörter enthält.

  • Initialisieren Sie eine leere Ausgabezeichenfolge.

  • Bilden Sie die Ausgabezeichenfolge, indem Sie den Vektor in umgekehrter Reihenfolge durchlaufen.

  • Fügen Sie jedes Wort aus dem umgekehrten Vektor zur Ausgabezeichenfolge hinzu, gefolgt von einem Leerzeichen.

  • Entfernen Sie das letzte Leerzeichen aus der Ausgabezeichenfolge.

  • Gibt die Ausgabezeichenfolge zurück.

  • Ende

Beispiel

Der Code verkörpert eine Prozedur, die die Reihenfolge der Wörter in einer bestimmten Zeichenfolge umkehrt. Dies wird erreicht, indem zunächst die Eingabezeichenfolge durch Verwendung eines Stringstream-Objekts in einen wortbasierten Stream umgewandelt wird Dann wird die Umkehrfunktion aus der Algorithmusbibliothek verwendet, um den Vektor umzukehren, um die abschließende Ausgabezeichenfolge zu bilden, wobei nach jedem Wort Leerzeichen eingefügt werden, mit Ausnahme des letzten Anschließend wird Leerzeichen aus der Ausgabezeichenfolge gelöscht, wodurch eine kompakte und verständliche Lösung entsteht, die die Funktionen der Standardbibliothek wie Stringstreams, Vektoren und die Algorithmenbibliothek optimal nutzt.

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>

std::string reverseStringByWords(const std::string& input) {
   std::stringstream ss(input);
   std::string word;
   std::vector<std::string> words;

   while (ss >> word) {
      words.push_back(word);
   }

   std::reverse(words.begin(), words.end());

   std::string output;
   for (const auto& w : words) {
      output += w + " ";
   }

   output.pop_back(); // Remove the last space
   return output;
}

int main() {
   std::string input = "Hello, how are you?";
   std::string output = reverseStringByWords(input);
   std::cout << "Input: " << input << std :: endl;
   std:: cout << "Output: " << output << std :: endl;
   return 0;
}
Die chinesische Übersetzung von

Output

lautet:

Output

Input: Hello, how are you?
Output: you? are how Hello,

Methode 2: Verwenden von Teilstring- und String-Manipulationsfunktionen

Methode 2 ist eine weitere Lösung, um die Reihenfolge der Wörter in einer Zeichenfolge umzukehren. Es verwendet Teilstring- und String-Manipulationsfunktionen anstelle von String-Streams und Vektoren wie in Methode 1.

Bei diesem Ansatz wird die Eingabezeichenfolge manuell in Teilzeichenfolgen unterteilt, die einzelne Wörter darstellen. Die Teilzeichenfolgen werden in umgekehrter Reihenfolge verkettet, um die endgültige Ausgabezeichenfolge zu bilden.

Algorithmus

  • Starten

  • Eingabezeichenfolge abrufen.

  • Initialisieren Sie zwei size_t-Variablen start und end, die zum Speichern der Start- und Endpositionen von Wörtern in der Eingabezeichenfolge verwendet werden.

  • Initialisieren Sie die Startposition auf 0.

  • Finden Sie die Position des ersten Leerzeichens in der Eingabezeichenfolge und speichern Sie es in der Endvariablen.

  • Initialisieren Sie eine leere Ausgabezeichenfolge.

  • Durchlaufen Sie die Eingabezeichenfolge und extrahieren Sie Wörter mithilfe von Teilzeichenfolgen.

  • Teilzeichenfolge von der Startposition bis zur Endposition extrahieren.

  • Verketten Sie die extrahierte Teilzeichenfolge vor der Ausgabezeichenfolge, gefolgt von einem Leerzeichen.

  • Aktualisieren Sie die Startposition auf die Position nach der Endposition.

  • Suchen Sie ausgehend von der neuen Startposition das nächste Leerzeichen in der Eingabezeichenfolge und aktualisieren Sie die Endposition.

  • Nachdem der Zyklus endet, verwenden Sie

  • Ende

Example

The code is a solution for reversing the order of words in a given string. It does this by dividing the input string into substrings using the find function and concatenating these substrings in reverse order to form the output string. The last space character is then removed from the output string using the pop_back function. This approach is more manual and low-level compared to Approach 1 and requires a deeper understanding of string manipulation. The code takes a given input string, divides it into substrings, reverses the order of these substrings, and returns the final output string.

#include <iostream>
#include <string>

std::string reverseStringByWords(const std::string& input) {
   size_t start = 0;
   size_t end = input.find(' ');
   std::string output;

   while (end != std::string::npos) {
      output = input.substr(start, end - start) + " " + output;
      start = end + 1;
      end = input.find(' ', start);
   }
    
   output = input.substr(start) + " " + output;
   output.pop_back(); // Remove the last space
   return output;
}

int main() {
   std::string input = "Hello, how are you?";
   std::string output = reverseStringByWords(input);
   std::cout << "Input: " << input << std::endl;
   std::cout << "Output: " << output << std::endl;

   return 0;
}

Output

的中文翻译为:

输出

Input: Hello, how are you?
Output: you? are how Hello,

结论

在编程中字符串操作的重要性:掌握字符串操作技术对于任何程序员来说都是至关重要的,因为文本数据在软件开发中无处不在。理解各种字符串操作的方法可以帮助开发人员编写更高效、可维护和健壮的代码。

Das obige ist der detaillierte Inhalt vonKehren Sie die Zeichenfolge entsprechend der Anzahl der Wörter um. 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

In Verbindung stehende Artikel

Mehr sehen