Maison  >  Article  >  développement back-end  >  Vérifiez si les caractères de chaque mot peuvent être réorganisés pour former une séquence arithmétique (AP)

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

王林
王林avant
2023-09-08 20:53:081125parcourir

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;
}

Sortie

Characters of each word cannot be rearranged to form an Arithmetic Progression

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";

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer