Rumah > pembangunan bahagian belakang > C++ > Program C++ untuk membandingkan susunan leksikografi dua rentetan

Program C++ untuk membandingkan susunan leksikografi dua rentetan

PHPz
Lepaskan: 2023-09-04 17:13:06
ke hadapan
1569 orang telah melayarinya

Program C++ untuk membandingkan susunan leksikografi dua rentetan

Perbandingan rentetan kamus bermaksud rentetan itu dibandingkan dalam susunan kamus. Contohnya, jika terdapat dua rentetan 'epal' dan 'rayuan', rentetan pertama akan datang yang terakhir kerana tiga aksara pertama 'aplikasi' adalah sama. Kemudian untuk rentetan pertama aksara ialah 'l' dan dalam rentetan kedua aksara keempat ialah 'e'. Memandangkan 'e' lebih pendek daripada 'l', ia akan didahulukan jika kita menyusun mengikut leksikografi.

String dibandingkan secara leksikografi sebelum disusun. Dalam artikel ini kita akan melihat Teknik yang berbeza untuk membandingkan dua rentetan secara leksikografi menggunakan C++.

Menggunakan fungsi compare() dalam rentetan C++

Objek rentetan C++ mempunyai fungsi compare(), yang menerima rentetan lain sebagai input dan membandingkannya.

Membandingkan rentetan semasa dengan rentetan kedua. Fungsi ini akan mengembalikan 0 apabila dua rentetan adalah sama Apabila rentetan adalah sama, ia akan mengembalikan nombor negatif (-1) apabila rentetan pertama lebih besar Apabila rentetan pertama lebih kecil, terjemahkannya kepada bahasa Cina:

Apabila rentetan pertama lebih kecil, ia ialah nombor positif (+1).

Tatabahasa

<first string>.compare( <second string> )
Salin selepas log masuk

Mari kita lihat algoritma dan pelaksanaan yang sepadan dalam C++.

Algoritma

  • Ambil dua rentetan s dan t sebagai input
  • cmp := Gunakan fungsi s.compare() dengan parameter t
  • Jika cmp bersamaan dengan 0, maka
    • Kedua-dua ini adalah sama
  • Jika tidak, apabila cmp positif, maka
    • s lebih besar daripada t
  • Jika tidak, apabila cmp negatif, maka
    • s lebih kecil daripada t
  • tamat jika

Contoh

#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;
}
Salin selepas log masuk

Output

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan fungsi strcmp() dengan rentetan gaya C

Dalam C++, kita juga boleh menggunakan fungsi C tradisional. C menggunakan tatasusunan aksara dan bukannya jenis rentetan.

data. Untuk membandingkan dua rentetan, fungsi strcmp() digunakan Ambil rentetan sebagai parameter. Mengembalikan 0 apabila ia sama. Mengembalikan nilai positif apabila rentetan pertama kurang daripada rentetan kedua Satu ialah apabila nilai kedua lebih besar, ia adalah nilai yang lebih besar dan negatif.

Tatabahasa

strcmp( <first string>, <second string> )
Salin selepas log masuk
Salin selepas log masuk

Contoh

#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;
}
Salin selepas log masuk

Output

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gunakan operator perbandingan

Seperti data berangka, rentetan juga boleh dibandingkan menggunakan operator perbandingan. jika-lain syarat boleh digunakan terus untuk rentetan dalam C++.

Tatabahasa

strcmp( <first string>, <second string> )
Salin selepas log masuk
Salin selepas log masuk

Contoh

#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;
}
Salin selepas log masuk

Output

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Perbandingan rentetan ialah tugas penting yang kami lakukan dalam berbilang aplikasi. Dalam C++, Terdapat beberapa cara berbeza untuk membandingkan rentetan. Yang pertama ialah menggunakan kaedah compare(). Kandungan yang perlu diterjemahkan ialah: Yang mengambil satu rentetan sebagai input dan menyemak dengan rentetan semasa Dalam C++ perbandingan Operator seperti (==), (>), (=) boleh digunakan untuk perbandingan rentetan. sebaliknya, Rentetan seperti C boleh dibandingkan menggunakan fungsi strcmp(). Fungsi ini menerima pemalar penunjuk aksara Kaedah compare() dan kaedah strcmp() mengembalikan 0 apabila kedua-duanya Apabila rentetan pertama lebih besar, nombor positif dikembalikan apabila dua rentetan adalah sama, 0 dikembalikan. Yang pertama lebih kecil, ia akan mengembalikan nombor positif.

Atas ialah kandungan terperinci Program C++ untuk membandingkan susunan leksikografi dua rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan