Maison >développement back-end >C++ >Programme C++ pour comparer l'ordre lexicographique de deux chaînes

Programme C++ pour comparer l'ordre lexicographique de deux chaînes

PHPz
PHPzavant
2023-09-04 17:13:061572parcourir

Programme C++ pour comparer lordre lexicographique de deux chaînes

La comparaison de chaînes de dictionnaire signifie que les chaînes sont comparées dans l'ordre du dictionnaire. Par exemple, s'il y a deux chaînes « pomme » et « appel », la première chaîne viendra en dernier car les trois premiers caractères de « application » sont identiques. Ensuite, pour la première chaîne, le caractère est « l » et dans la deuxième chaîne, le quatrième caractère est « e ». Puisque « e » est plus court que « l », il viendra en premier si nous trions lexicographiquement.

Les chaînes sont comparées lexicographiquement avant d'être organisées. Dans cet article, nous verrons Différentes techniques pour comparer lexicographiquement deux chaînes en utilisant C++.

Utilisation de la fonction compare() dans les chaînes C++

L'objet chaîne C++ a une fonction compare(), qui accepte une autre chaîne en entrée et la compare.

Compare la chaîne actuelle à la deuxième chaîne. Cette fonction renverra 0 lorsque deux chaînes sont identiques Lorsque les chaînes sont identiques, il renverra un nombre négatif (-1) lorsque la première chaîne est plus grande Lorsque la première chaîne est plus petite, traduisez-la en chinois :

Lorsque la première chaîne est plus petite, c'est un nombre positif (+1).

Grammaire

<first string>.compare( <second string> )

Jetons un coup d'œil à l'algorithme et à l'implémentation correspondante en C++.

Algorithme

  • Prenez deux chaînes s et t comme entrée
  • cmp := Utilisez la fonction s.compare() avec le paramètre t
  • Si cmp est égal à 0, alors
    • Ces deux-là sont identiques
  • Sinon, lorsque cmp est positif, alors
    • s est plus grand que t
  • Sinon, lorsque cmp est négatif, alors
    • s est plus petit que t
  • fin si

Exemple

#include <iostream>
using namespace std;
string solve( string s, string t ){
   int ret;
   ret = s.compare( t );
   if( ret == 0 ) {
      return s + " and " + t + " are the same";
   } else if( ret > 0 ) {
      return s + " is larger than " + t;
   } else {
      return s + " is smaller than " + t;
   }
}
int main(){
   string s = "apple";
   string t = "appeal";
   cout << "The result of comparison: " << solve( s, t ) << endl;
   s = "popular";
   t = "popular";
   cout << "The result of comparison: " << solve( s, t ) << endl;
   s = "Hello";
   t = "hello";
   cout << "The result of comparison: " << solve( s, t ) << endl;
}

Sortie

The result of comparison: apple is larger than appeal
The result of comparison: popular and popular are the same
The result of comparison: Hello is smaller than hello

Utilisation de la fonction strcmp() avec des chaînes de style C

En C++, nous pouvons également utiliser des fonctions C traditionnelles. C utilise des tableaux de caractères au lieu de types de chaînes.

data. Pour comparer deux chaînes, les fonctions strcmp() sont utilisées. Cette fonction en prend deux. Prenez une chaîne comme paramètre. Renvoie 0 lorsqu'ils sont identiques. Renvoie une valeur positive lorsque la première chaîne est inférieure à la deuxième chaîne La première est que lorsque la deuxième valeur est plus grande, c’est la valeur la plus grande et négative.

Grammaire

strcmp( <first string>, <second string> )

Exemple

#include <iostream>
#include <cstring>
using namespace std;
string solve( const char* s, const char* t ){
   int ret;
   ret = strcmp( s, t );
   if( ret == 0 ) {
      return string(s) + " and " + string(t) + " are the same";
   } else if( ret > 0 ) {
      return string(s) + " is larger than " + string(t);
   } else {
      return string(s) + " is smaller than " + string(t);
   }
}
int main(){
   string s = "apple";
   string t = "appeal";
   cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl;
   s = "popular";
   t = "popular";
   cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl;
   s = "Hello";
   t = "hello";
   cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl;
}

Sortie

The result of comparison: apple is larger than appeal
The result of comparison: popular and popular are the same
The result of comparison: Hello is smaller than hello

Utilisez des opérateurs de comparaison

Comme les données numériques, les chaînes peuvent également être comparées à l'aide d'opérateurs de comparaison. si-sinon les conditions peuvent être utilisées directement pour les chaînes en C++.

Grammaire

strcmp( <first string>, <second string> )

Exemple

#include <iostream>
using namespace std;
string solve( string s, string t ){
   int ret;
   if( s == t ) {
      return s + " and " + t + " are the same";
   } else if( s > t ) {
      return s + " is larger than " + t;
   } else {
      return s + " is smaller than " + t;
   }
}
int main(){
   string s = "apple";
   string t = "appeal";
   cout << "The result of comparison: " << solve( s, t ) << endl;
   s = "popular";
   t = "popular";
   cout << "The result of comparison: " << solve( s, t ) << endl;
   s = "Hello";
   t = "hello";
   cout << "The result of comparison: " << solve( s, t ) << endl;
}

Sortie

The result of comparison: apple is larger than appeal
The result of comparison: popular and popular are the same
The result of comparison: Hello is smaller than hello

Conclusion

La comparaison de chaînes est une tâche importante que nous effectuons dans plusieurs applications. En C++, Il existe plusieurs manières différentes de comparer des chaînes. La première consiste à utiliser la méthode compare() Le contenu qui doit être traduit est : Qui prend une chaîne en entrée et vérifie la comparaison avec la chaîne actuelle. Des opérateurs tels que (==), (>), (=) peuvent être utilisés pour la comparaison de chaînes. d'autre part, Les chaînes de type C peuvent être comparées à l’aide de la fonction strcmp(). Cette fonction accepte des constantes pointeurs de caractères. La méthode compare() et la méthode strcmp() renvoient 0 lorsque les deux Lorsque la première chaîne est plus grande, un nombre positif est renvoyé ; lorsque les deux chaînes sont identiques, 0 est renvoyé. Le premier est plus petit, il renverra un nombre positif.

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