Maison > développement back-end > C++ > le corps du texte

Vérifiez si les caractères de chaque mot peuvent être réorganisés pour former une séquence arithmétique (AP)

王林
Libérer: 2023-09-08 20:53:08
avant
1119 Les gens l'ont consulté

Vérifiez si les caractères de chaque mot peuvent être réorganisés pour former une séquence arithmétique (AP)

Dans cet article, nous verrons comment vérifier si les caractères de chaque mot d'une chaîne donnée peuvent être réorganisés pour former une séquence arithmétique (AP). Nous implémenterons également la solution en utilisant C++ et fournirons un exemple pour illustrer le fonctionnement du code.

Séquence arithmétique (AP)

Une Séquence Arithmétique (AP) est une séquence de nombres dans laquelle chaque terme est obtenu en ajoutant une constante d au terme précédent. La constante d est appelée tolérance.

Par exemple, la suite 1, 3, 5, 7, 9 est une suite arithmétique avec une tolérance de 2.

Méthode

Pour vérifier si les caractères de chaque mot d'une chaîne donnée peuvent être réorganisés pour former une séquence arithmétique, nous allons procéder comme suit −

  • Nous diviserons la chaîne donnée en mots individuels.

  • Pour chaque mot, nous trierons les caractères par ordre alphabétique.

  • Nous calculerons la tolérance des caractères adjacents dans les mots triés.

  • Si la tolérance est la même pour toutes les paires de caractères adjacents, alors les caractères du mot peuvent être réorganisés pour former une séquence arithmétique.

  • Nous répéterons les étapes 2 à 4 pour tous les mots de la chaîne donnée.

  • Si tous les mots peuvent être réorganisés pour former une séquence arithmétique, alors nous renvoyons vrai. Sinon, retournez false.

Exemple

Implémentons la méthode ci-dessus en C++ -

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

using namespace std;

bool canFormAP(string s) {
   vector<string> words;
   string word = "";
   for(char c : s) {
      if(c == ' ') {
         words.push_back(word);
         word = "";
      } else {
         word += c;
      }
   }
   words.push_back(word);
   for(string w : words) {
      sort(w.begin(), w.end());
      int n = w.length();
      if(n <= 2) {
         continue;
      }
      int d = w[1] - w[0];
      for(int i = 2; i < n; i++) {
         if(w[i] - w[i-1] != d) {
            return false;
         }
      }
   }
   return true;
}

int main() {
   string s = "tutorialspoint";
   if(canFormAP(s)) {
      cout << "Characters of each word can be rearranged to form an Arithmetic Progression\n";
   } else {
      cout << "Characters of each word cannot be rearranged to form an Arithmetic Progression\n";
   }
   return 0;
}
Copier après la connexion

Sortie

Characters of each word cannot be rearranged to form an Arithmetic Progression
Copier après la connexion

Dans le code ci-dessus, la fonction canFormAP accepte une chaîne s comme entrée et renvoie vrai si les caractères de chaque mot de la chaîne peuvent être réorganisés pour former une séquence arithmétique. La fonction principale appelle la fonction canFormAP, prend la chaîne « hello world » en entrée et imprime le message correspondant en fonction de la valeur de retour de la fonction.

Exemples de cas de test

Considérons un exemple de cas de test pour comprendre comment fonctionne le code ci-dessus -

string s = "the quick brown fox jumps over the lazy dog";
Copier après la connexion

Dans cet exemple, la chaîne donnée est "le renard brun rapide saute par-dessus le chien paresseux". Chaque mot d'une chaîne peut être réorganisé pour former une séquence arithmétique. Par exemple, le mot « rapide » peut être réorganisé dans la séquence arithmétique « cikqu » avec une tolérance de 2. Comme nous l'avons vu, le mot « paresseux » peut être réorganisé dans la séquence arithmétique « alzy » avec une tolérance de 11.

Ainsi, dans cet exemple, les caractères de chaque mot de la chaîne donnée peuvent être réorganisés pour former une séquence arithmétique, et le résultat du code est "Les caractères peuvent être réorganisés pour former une séquence arithmétique."

Conclusion

Dans cet article, nous avons expliqué comment vérifier si les caractères de chaque mot d'une chaîne donnée peuvent être réorganisés pour former une séquence arithmétique (AP). Nous avons adopté une approche simple consistant à trier les caractères de chaque mot et à vérifier si les tolérances entre les paires de caractères adjacentes étaient les mêmes. Nous fournissons également un exemple d’implémentation de la solution en C++ et l’expliquons avec un exemple de cas de test.

Cette question peut avoir diverses applications pratiques. Par exemple, en cryptographie, la réorganisation des caractères d'une chaîne peut être utilisée pour chiffrer le message d'origine, et vérifier si les caractères peuvent être réorganisés pour former une séquence arithmétique peut être utilisée comme étape de vérification dans le processus de décryptage.

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!