


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; }
Output
Yes, permutation exists such that one string is greater than the other.
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; }
Output
Yes, permutation exists such that one string is greater than the other.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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.

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.

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.

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

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.

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