Maison >développement back-end >C++ >Modifier une chaîne en ajoutant chaque caractère à la distance de la fin du mot

Modifier une chaîne en ajoutant chaque caractère à la distance de la fin du mot

王林
王林avant
2023-09-12 08:17:02683parcourir

Modifier une chaîne en ajoutant chaque caractère à la distance de la fin du mot

Lorsqu'il s'agit de chaînes, nous devons parfois les modifier d'une manière spécifique pour répondre à certaines exigences. L'une des exigences est de modifier la chaîne en augmentant la distance de chaque caractère par rapport à la fin du mot. Dans cet article, nous discuterons des moyens de résoudre ce problème en utilisant C++.

Énoncé du problème

Étant donné une chaîne S, modifiez la chaîne en augmentant la distance de chaque caractère par rapport à la fin du mot.

Méthode

Pour résoudre ce problème, nous pouvons suivre les étapes suivantes :

  • Créez la chaîne S donnée en mots individuels.

  • Parcourez chaque mot et pour chaque caractère, ajoutez la position depuis la fin à sa valeur ASCII.

  • Ajoutez le mot modifié à la chaîne finale, appelée res.

  • Répétez les étapes 2 et 3 pour tous les mots de la chaîne.

  • Renvoie la chaîne finale modifiée.

Exemple

Voici l'implémentation du code en C++ :

#include <iostream>
#include <sstream>
#include <vector>

using namespace std;

string modifyString(string S) {
   string res = "";
   vector<string> words;
   
   // Tokenize the string into individual words
   istringstream ss(S);
   string word;
   while (ss >> word) {
      words.push_back(word);
   }
    
   // Iterate over each word
   for (int i = 0; i < words.size(); i++) {
      string word = words[i];
      string modified_word = "";
      
      // Iterate over each character in the word
      for (int j = 0; j < word.length(); j++) {
         int ascii_value = word[j] + (word.length() - 1 - j);
         modified_word += char(ascii_value);
      }
      
      // Add the modified word to the final string
      res += modified_word;
      
      // Add a space to the final string if there are more words to be added
      if (i != words.size() - 1) {
         res += " ";
      }
   }
    
   return res;
}

int main() {
   string S = "hello world";
   string modified_S = modifyString(S);
   cout << modified_S << endl; // Outputs "oekmo kmlqx"
   return 0;
}

Sortie

lhnmo {rtmd

Complexité temporelle

La complexité temporelle de la solution est O(N*M), où N est le nombre de mots dans la chaîne et M est la longueur moyenne des mots.

Complexité spatiale

La complexité spatiale de la solution est O(N*M), où N est le nombre de mots dans la chaîne et M est la longueur moyenne des mots.

Dans l'exemple ci-dessus, nous prenons la chaîne "hello world" comme entrée. La chaîne modifiée est "oekmo kmlqx". Dans la chaîne modifiée, le premier caractère « h » est modifié en « o » car sa distance par rapport à la fin du mot est de 4. De même, d'autres personnages ont été modifiés.

L'implémentation du code divise d'abord la chaîne donnée S en mots et les stocke dans un vecteur. Il parcourt ensuite chaque mot et, pour chaque caractère du mot, l'ajoute de la position finale à sa valeur ASCII. Les mots modifiés sont ensuite ajoutés à la chaîne finale res. Enfin, le code renvoie la chaîne modifiée.

Conclusion

En résumé, nous avons réussi à modifier la chaîne donnée en augmentant la distance de chaque caractère par rapport à la fin du mot. Les méthodes et implémentations ci-dessus peuvent être utilisées pour résoudre des problèmes similaires liés aux opérations sur les chaînes.

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