Maison >développement back-end >C++ >Inverser une chaîne en fonction du nombre de mots

Inverser une chaîne en fonction du nombre de mots

WBOY
WBOYavant
2023-09-03 15:09:06972parcourir

Inverser une chaîne en fonction du nombre de mots

La manipulation de chaînes est une compétence essentielle en programmation, car elle nous aide à traiter et à analyser efficacement les données texte.

Dans cet article, nous verrons comment inverser une chaîne en fonction du nombre de mots en C++.

Méthode

Approche 1 − Utilisation de flux de chaînes et de vecteurs

Méthode 2 - Utilisation des fonctions de manipulation de sous-chaînes et de chaînes

Syntaxe

Objets String en C++ : La classe std::string fait partie de la bibliothèque standard C++ et fournit diverses fonctions de manipulation de chaînes.

Fonctions de manipulation de chaînes : certaines fonctions courantes de manipulation de chaînes en C++ incluent length(), substr(), find(), delete() et replace().

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

Approche 1 : - Utilisation de flux de chaînes et de vecteurs

Cette approche utilisée dans le code consiste à convertir la chaîne d'entrée en une séquence de mots à l'aide d'un objet stringstream. Les mots sont ensuite extraits un par un du flux et stockés dans une collection de chaînes représentées par un vecteur.

Ensuite, la collection de mots est inversée à l'aide de la fonction inverse de la bibliothèque d'algorithmes. Les mots inversés sont ensuite réunis pour former la chaîne de sortie finale, avec un espace ajouté après chaque mot sauf le dernier.

Algorithme

  • Démarrer

  • Obtenir la chaîne d'entrée.

  • Créez un flux de chaînes à partir de la chaîne d'entrée.

  • Initialisez un vecteur vide pour stocker des mots.

  • Extraire des mots de manière itérative via stringstream.

  • Extraire un mot du stringstream.

  • Poussez le mot extrait dans le vecteur.

  • Inversez le vecteur contenant les mots.

  • Initialisez une chaîne de sortie vide.

  • Formez la chaîne de sortie en parcourant le vecteur en sens inverse.

  • Ajoutez chaque mot du vecteur inversé à la chaîne de sortie, suivi d'un espace.

  • Supprimez le dernier espace de la chaîne de sortie.

  • Renvoie la chaîne de sortie.

  • Fin

Exemple

Le code incarne une procédure qui inverse la séquence de mots dans une chaîne spécifiée. Ceci est accompli en transformant d'abord la chaîne d'entrée en un flux basé sur des mots grâce à l'utilisation d'un objet stringstream. Par la suite, les mots sont extraits un par un et. placé dans un vecteur. Ensuite, la fonction inverse de la bibliothèque d'algorithmes est utilisée pour inverser le vecteur. Enfin, les mots inversés sont réunis pour former la chaîne de sortie concluante, avec des espaces insérés après chaque mot, à l'exclusion du dernier. l'espace est ensuite supprimé de la chaîne de sortie, ce qui donne une solution compacte et compréhensible qui tire le meilleur parti des fonctionnalités de la bibliothèque standard telles que les flux de chaînes, les vecteurs et la bibliothèque d'algorithmes.

#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;
}
La traduction chinoise de

Output

est :

Output

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

Méthode 2 : Utiliser les fonctions de manipulation de sous-chaînes et de chaînes

La méthode 2 est une autre solution pour inverser l'ordre des mots dans une chaîne. Il utilise des fonctions de manipulation de sous-chaînes et de chaînes au lieu d'utiliser des flux de chaînes et des vecteurs comme dans la méthode 1.

Cette approche consiste à diviser manuellement la chaîne d'entrée en sous-chaînes, qui représentent des mots individuels. Les sous-chaînes sont concaténées dans l'ordre inverse pour former la chaîne de sortie finale.

Algorithme

  • Démarrer

  • Obtenir la chaîne d'entrée.

  • Initialisez deux variables size_t start et end, utilisées pour enregistrer les positions de début et de fin des mots dans la chaîne d'entrée.

  • Initialisez la position de départ à 0.

  • Trouvez la position du premier espace dans la chaîne d'entrée et stockez-la dans la variable de fin.

  • Initialisez une chaîne de sortie vide.

  • Parcourez la chaîne d'entrée et extrayez les mots à l'aide de sous-chaînes.

  • Extraire la sous-chaîne de la position de départ à la position de fin.

  • Concaténez la sous-chaîne extraite devant la chaîne de sortie, suivie d'un espace.

  • Mettez à jour la position de départ vers la position après la position finale.

  • Trouvez l'espace suivant dans la chaîne d'entrée à partir de la nouvelle position de départ et mettez à jour la position de fin.

  • Une fois le cycle terminé, utilisez

  • Fin

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,

结论

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

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

Articles Liés

Voir plus