Jadual Kandungan
Contoh
Kaedah 2
Algoritma
Output
Rumah pembangunan bahagian belakang C++ Menyemak sama ada sebarang pilihatur rentetan tertentu secara leksikografi lebih besar daripada rentetan lain yang diberikan

Menyemak sama ada sebarang pilihatur rentetan tertentu secara leksikografi lebih besar daripada rentetan lain yang diberikan

Sep 22, 2023 am 08:41 AM
Bandingkan Susunan rentetan Susunan leksikografi

Menyemak sama ada sebarang pilihatur rentetan tertentu secara leksikografi lebih besar daripada rentetan lain yang diberikan

Kami telah diberikan dua rentetan dan perlu menyemak sama ada pilih atur rentetan yang diberikan wujud supaya satu pilihatur boleh mempunyai aksara yang lebih besar daripada pilih atur lain pada indeks ke-i.

Kita boleh menyelesaikan masalah dengan mengisih rentetan dan membandingkan setiap aksara dalam rentetan itu satu demi satu. Sebagai alternatif, kita boleh menggunakan frekuensi aksara bagi dua rentetan untuk menyelesaikan masalah.

Pernyataan Masalah - Kami diberi rentetan str1 dan str2 panjang N. Kita perlu menyemak sama ada terdapat sebarang pilihatur rentetan supaya satu lebih besar dari segi leksikografi daripada yang lain. Ini bermakna bahawa sebarang pilih atur harus mempunyai aksara pada indeks ke-i yang lebih besar daripada aksara pada indeks ke-i bagi pilihatur rentetan yang lain.

Contoh

Input - str1 = "aef"; str2 = "fgh";

Output–Ya

Penjelasan– ‘fgh’ sudah lebih besar daripada ‘aef’. Di sini, a >

Input– str1 = "adsm"; str2 = "obpc";

Output–Tidak

Penjelasan– Kami tidak dapat menjumpai sebarang pilihatur di mana setiap aksara bagi satu rentetan lebih besar daripada yang lain.

Kaedah 1

Dalam kaedah ini, kita akan menyusun dua rentetan dalam susunan leksikografi. Kami kemudian akan membandingkan setiap aksara rentetan. Mengembalikan benar jika semua aksara str1 kurang daripada str2, atau jika semua aksara str2 kurang daripada str1. Jika tidak, pulangkan palsu.

Algoritma

  • Gunakan kaedah sort() untuk mengisih rentetan.

  • Tentukan pembolehubah boolean isStr1Greater dan mulakannya dengan benar.

  • Lintas rentetan dan jika aksara pada kedudukan indeks ke-i dalam str1 kurang daripada str2, kemas kini nilai isStr1Greater kepada palsu dan gunakan kata kunci putus untuk mengganggu gelung

  • Jika isStr1Greater adalah benar, gelung berjaya diselesaikan dan mengembalikan benar.

  • Sekarang, gelung melalui rentetan untuk menyemak sama ada str2 lebih besar daripada str1. Jika kita mendapati bahawa mana-mana aksara str1 lebih besar daripada str2, maka false dikembalikan.

  • Kembalikan benar jika gelung berjaya diselesaikan.

Contoh

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

bool isAnyPermLarge(string string1, string string2) {
   // sort the strings
   sort(string1.begin(), string1.end());
   sort(string2.begin(), string2.end());
   // to keep track if string1 is greater than string2
   bool isStr1Greater = true;
   // traverse the string
   for (int i = 0; i < string1.length(); i++) {
      // if any character of string1 is less than string2, return false.
      if (string1[i] < string2[i]) {
          isStr1Greater = false;
          break;
      }
   }
   // If string1 is greater, returning true
   if (isStr1Greater)
      return true;
   // traverse the string
   for (int i = 0; i < string2.length(); i++) {
      // if any character of string2 is less than string1, return false.
      if (string1[i] > string2[i]) {
          return false;
      }
   }
   // return true if string2 is greater than string1
   return true;
}
int main() {
   string string1 = "aef";
   string string2 = "fgh";
   bool res = isAnyPermLarge(string1, string2);
   if (res) {
      cout << "Yes, permutation exists such that one string is greater than the other.";
   } else {
      cout << "No, permutation does not exist such that one string is greater than the other.";
   }
   return 0;
}
Salin selepas log masuk

Output

Yes, permutation exists such that one string is greater than the other.
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa - O(N*logN) kerana kami mengisih rentetan.

Kerumitan Ruang - O(N) diperlukan untuk mengisih rentetan.

Kaedah 2

Dalam kaedah ini kita akan menyimpan jumlah kekerapan setiap aksara dalam kedua-dua rentetan. Selepas itu, kami akan menggunakan kekerapan terkumpul untuk memutuskan sama ada kami boleh mencari sebarang pilih atur rentetan supaya satu lebih besar daripada yang lain.

Algoritma

  • Tentukan tatasusunan peta1 dan peta2 dengan panjang 26 dan mulakannya kepada sifar.

  • Simpan kekerapan aksara dalam str1 ke dalam peta1 dan simpan kekerapan aksara dalam str2 ke dalam peta2.

  • Tentukan pembolehubah boolean isStr1 dan isStr2 dan mulakannya kepada false untuk menjejaki sama ada str1 lebih besar daripada str2.

  • Tentukan pembolehubah cnt1 dan cnt2 untuk menyimpan kekerapan kumulatif aksara rentetan.

  • Merentasi peta1 dan peta2. Tambahkan map1[i] pada cnt1 dan map2[i] kepada cnt2.

  • Jika cnt1 lebih besar daripada cnt2, kekerapan kumulatif aksara dari str1 ke indeks ke-i adalah lebih besar. Jika ya, dan str2 sudah lebih besar, kembalikan palsu. Jika tidak, tukar isStr1 kepada true

  • Jika cnt2 lebih besar daripada cnt1, maka kekerapan kumulatif aksara pada indeks ke-i dalam str2 adalah lebih besar. Jika ya, dan str1 sudah lebih besar, kembalikan palsu. Jika tidak, tukar isStr2 kepada true

  • Akhirnya kembali benar.

Contoh

#include <iostream>
#include <string>
using namespace std;

bool isAnyPermLarge(string string1, string string2) {
   int map1[26] = {0};
   int map2[26] = {0};
   // store the frequency of each character in the map1
   for (int i = 0; i < string1.length(); i++) {
      map1[string1[i] - 'a']++;
   }
   // store the frequency of each character in the map2
   for (int i = 0; i < string2.length(); i++) {
      map2[string2[i] - 'a']++;
   }
   // To keep track of which string is smaller. Initially, both strings are equal.
   bool isStr1 = false, isStr2 = false;
   // to count the cumulative frequency of characters of both strings
   int cnt1 = 0, cnt2 = 0;
   // traverse for all characters.
   for (int i = 0; i < 26; i++) {
      // update the cumulative frequency of characters
      cnt1 += map1[i];
      cnt2 += map2[i];
      if (cnt1 > cnt2) {
          // If string2 is already greater and cumulative frequency of string1 is greater than string2, then return false
          if (isStr2)
              return false;
          // update isStr1 to true as string1 is smaller
          isStr1 = true;
      }
      if (cnt1 < cnt2) {
          // If string1 is already greater and cumulative frequency of string2 is greater than string1, then return false
          if (isStr1)
              return false;
          // update isStr2 to true as string2 is smaller
          isStr2 = true;
      }
   }
   return true;
}
int main() {
   string string1 = "aef";
   string string2 = "fgh";
   bool res = isAnyPermLarge(string1, string2);
   if (res) {
      cout << "Yes, permutation exists such that one string is greater than the other.";
   } else {
      cout << "No, permutation does not exist such that one string is greater than the other.";
   }
   return 0;
}
Salin selepas log masuk

Output

Yes, permutation exists such that one string is greater than the other.
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa - O(N), kerana kita mengira kekerapan aksara.

Kerumitan ruang - O(26) kerana kami menyimpan kekerapan aksara dalam tatasusunan.

Kami belajar untuk menyemak sama ada terdapat sebarang pilihatur dua rentetan supaya semua aksara satu rentetan boleh lebih besar daripada rentetan yang lain. Kaedah pertama menggunakan kaedah pemeringkatan, dan kaedah kedua menggunakan kekerapan kumulatif aksara.

Atas ialah kandungan terperinci Menyemak sama ada sebarang pilihatur rentetan tertentu secara leksikografi lebih besar daripada rentetan lain yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mendayakan fungsi nfc pada Xiaomi Mi 14 Pro? Bagaimana untuk mendayakan fungsi nfc pada Xiaomi Mi 14 Pro? Mar 19, 2024 pm 02:28 PM

Pada masa kini, prestasi dan fungsi telefon bimbit semakin berkuasa Hampir semua telefon bimbit dilengkapi dengan fungsi NFC yang mudah untuk memudahkan pengguna untuk pembayaran mudah alih dan pengesahan identiti. Walau bagaimanapun, sesetengah pengguna Xiaomi 14Pro mungkin tidak tahu cara mendayakan fungsi NFC. Seterusnya, izinkan saya memperkenalkannya kepada anda secara terperinci. Bagaimana untuk mendayakan fungsi nfc pada Xiaomi 14Pro? Langkah 1: Buka menu tetapan telefon anda. Langkah 2: Cari dan klik pilihan "Sambung dan Kongsi" atau "Wayarles & Rangkaian". Langkah 3: Dalam menu Sambungan & Perkongsian atau Wayarles & Rangkaian, cari dan klik "NFC & Pembayaran". Langkah 4: Cari dan klik "NFC Switch". Biasanya, lalai dimatikan. Langkah 5: Pada halaman suis NFC, klik butang suis untuk menghidupkannya.

Bagaimana untuk menetapkan jarak baris dalam WPS Word untuk menjadikan dokumen lebih kemas Bagaimana untuk menetapkan jarak baris dalam WPS Word untuk menjadikan dokumen lebih kemas Mar 20, 2024 pm 04:30 PM

WPS ialah perisian pejabat kami yang biasa digunakan Semasa mengedit artikel panjang, fon selalunya terlalu kecil untuk dilihat dengan jelas, jadi fon dan keseluruhan dokumen dilaraskan. Sebagai contoh: melaraskan jarak baris dokumen akan menjadikan keseluruhan dokumen sangat jelas. Saya cadangkan agar semua rakan mempelajari langkah operasi ini, saya akan berkongsi dengan anda hari ini. Buka fail teks WPS yang anda ingin laraskan, cari bar alat tetapan perenggan dalam menu [Mula], dan anda akan melihat ikon tetapan jarak baris kecil (ditunjukkan sebagai bulatan merah dalam gambar). 2. Klik segi tiga terbalik kecil di sudut kanan bawah tetapan jarak baris, dan nilai jarak baris yang sepadan akan muncul Anda boleh memilih 1 hingga 3 kali jarak baris (seperti yang ditunjukkan oleh anak panah dalam rajah). 3. Atau klik kanan perenggan dan ia akan muncul.

Bagaimana untuk menggunakan TikTok pada Huawei Pocket2 dari jauh? Bagaimana untuk menggunakan TikTok pada Huawei Pocket2 dari jauh? Mar 18, 2024 pm 03:00 PM

Meluncur skrin melalui udara adalah ciri Huawei yang sangat dipuji dalam siri Huawei mate60 Ciri ini menggunakan sensor laser pada telefon dan kamera kedalaman 3D kamera hadapan untuk melengkapkan siri fungsi yang tidak memerlukan The. fungsi menyentuh skrin, seperti meleret TikTok dari udara, tetapi bagaimana menggunakan Huawei Pocket 2 untuk meleret TikTok dari udara? Bagaimana untuk mengambil tangkapan skrin dari udara dengan Huawei Pocket2? 1. Buka tetapan Huawei Pocket2 2. Kemudian pilih [Kebolehcapaian]. 3. Klik untuk membuka [Persepsi Pintar]. 4. Hanya hidupkan suis [Air Swipe Screen], [Air Screenshot] dan [Air Press]. 5. Apabila menggunakannya, anda perlu menahannya 20~40CM dari skrin, buka tapak tangan anda dan tunggu sehingga ikon tapak tangan muncul pada skrin.

Lukisan CAD iPhone 16 Pro terdedah, menambah butang baharu kedua Lukisan CAD iPhone 16 Pro terdedah, menambah butang baharu kedua Mar 09, 2024 pm 09:07 PM

Fail CAD iPhone 16 Pro telah didedahkan, dan reka bentuknya konsisten dengan khabar angin sebelum ini. Musim luruh lepas, iPhone 15 Pro menambah butang Tindakan, dan musim gugur ini, Apple nampaknya merancang untuk membuat pelarasan kecil pada saiz perkakasan. Menambah butang Tangkap Menurut khabar angin, iPhone 16 Pro mungkin menambah butang baharu kedua, yang akan menjadi tahun kedua berturut-turut untuk menambah butang baharu selepas tahun lepas. Khabar angin mengatakan bahawa butang Tangkap baharu akan ditetapkan di sebelah kanan bawah iPhone 16 Pro Reka bentuk ini dijangka menjadikan kawalan kamera lebih mudah dan juga membolehkan butang Tindakan digunakan untuk fungsi lain. Butang ini bukan lagi sekadar butang pengatup biasa. Mengenai kamera, dari iP semasa

Cara menukar bahasa dalam pasukan microsoft Cara menukar bahasa dalam pasukan microsoft Feb 23, 2024 pm 09:00 PM

Terdapat banyak bahasa untuk dipilih dalam Microsoft Teams, jadi bagaimana untuk menukar bahasa? Pengguna perlu mengklik menu, kemudian cari Tetapan, pilih Umum di sana, kemudian klik Bahasa, pilih bahasa dan simpannya Pengenalan kepada kaedah menukar bahasa ini boleh memberitahu anda kandungan tertentu Lihatlah. Bar! Cara menukar bahasa dalam Microsoft Teams Jawapan: Pilih proses khusus dalam Tetapan-Umum-Bahasa: 1. Mula-mula, klik tiga titik di sebelah avatar untuk memasukkan tetapan. 2. Kemudian klik pada pilihan umum di dalam. 3. Kemudian klik pada bahasa dan tatal ke bawah untuk melihat lebih banyak bahasa. 4. Akhir sekali, klik Simpan dan Mulakan Semula.

Bagaimana untuk menetapkan nada dering tersuai untuk Redmi K70E? Bagaimana untuk menetapkan nada dering tersuai untuk Redmi K70E? Feb 24, 2024 am 10:00 AM

Redmi K70E sudah pasti sangat baik Sebagai telefon mudah alih dengan harga lebih daripada 2,000 yuan, Redmi K70E boleh dikatakan sebagai salah satu telefon mudah alih yang paling kos efektif dalam kelasnya. Ramai pengguna yang mengejar keberkesanan kos telah membeli telefon ini untuk mengalami pelbagai fungsi pada Redmi K70E. Jadi bagaimana untuk menetapkan nada dering tersuai untuk Redmi K70E? Bagaimana untuk menetapkan nada dering tersuai untuk Redmi K70E? Untuk menetapkan nada dering panggilan masuk tersuai untuk Redmi K70E, anda boleh mengikuti langkah di bawah: Buka aplikasi tetapan telefon anda, cari pilihan "Bunyi dan getaran" atau "Bunyi" dalam aplikasi tetapan dan klik "Nada dering panggilan masuk" atau "Nada dering telefon" " pilihan. Dalam tetapan nada dering

Perbezaan dan analisis perbandingan antara bahasa C dan PHP Perbezaan dan analisis perbandingan antara bahasa C dan PHP Mar 20, 2024 am 08:54 AM

Perbezaan dan Analisis Perbandingan Bahasa C dan PHP Bahasa C dan PHP adalah kedua-dua bahasa pengaturcaraan biasa, tetapi mereka mempunyai perbezaan yang jelas dalam banyak aspek. Artikel ini akan menjalankan analisis perbandingan bahasa C dan PHP dan menggambarkan perbezaan antara mereka melalui contoh kod tertentu. 1. Sintaks dan penggunaan: Bahasa C: Bahasa C ialah bahasa pengaturcaraan berorientasikan proses, terutamanya digunakan untuk pengaturcaraan peringkat sistem dan pembangunan terbenam. Sintaks bahasa C agak mudah dan tahap rendah, boleh mengendalikan memori secara langsung, dan cekap dan fleksibel. Bahasa C menekankan kesempurnaan program pengaturcara

Perbandingan dan analisis kelebihan dan kekurangan versi PHP7.2 dan 5 Perbandingan dan analisis kelebihan dan kekurangan versi PHP7.2 dan 5 Feb 27, 2024 am 10:51 AM

Perbandingan dan analisis kelebihan dan kekurangan PHP7.2 dan 5. PHP ialah bahasa skrip bahagian pelayan yang sangat popular dan digunakan secara meluas dalam pembangunan Web. Walau bagaimanapun, PHP sentiasa dikemas kini dan dipertingkatkan dalam versi yang berbeza untuk memenuhi keperluan yang berubah-ubah. Pada masa ini, PHP7.2 ialah versi terkini, yang mempunyai banyak perbezaan dan penambahbaikan yang ketara berbanding dengan versi PHP5 sebelumnya. Dalam artikel ini, kami akan membandingkan versi PHP7.2 dan PHP5, menganalisis kelebihan dan kekurangannya, dan memberikan contoh kod khusus. 1. Prestasi PH

See all articles