


Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari
Pernyataan Masalah
Kami mempunyai rentetan str dan rentetan binari B. Panjang kedua-dua rentetan adalah sama dengan N. Kita perlu menyemak sama ada kita boleh membuat rentetan str rentetan palindrom dengan menukar aksaranya beberapa kali pada mana-mana pasangan indeks yang mengandungi aksara tidak sama dalam rentetan B.
Contoh Contoh
Masuk
str = ‘AAS’ B = ‘101’
Output
‘YES’
Penjelasan
ialah:Penjelasan
Kita boleh menukar str[1] dan str[2] kerana B[1] dan B[2] adalah tidak sama. Rentetan akhir boleh menjadi 'ASA'.
Masuk
str = ‘AASS’ B = ‘1111’
Output
‘No’
Penjelasan
ialah:Penjelasan
Kami tidak boleh membuat string palindrom kerana rentetan B tidak mengandungi aksara yang tidak sama rata.
Masuk
str = ‘AASSBV’ B = ‘111100’
Output
‘No’
Penjelasan
ialah:Penjelasan
Kami tidak boleh menjadikan rentetan str sebagai palindrom kerana ketidakpadanan kekerapan aksara.
Kaedah 1
Dalam kaedah pertama kami akan menyemak sama ada sebarang rentetan palindrom boleh dibuat menggunakan semua aksara rentetan str. Jika ya, kita boleh menyemak sama ada kita boleh menukar aksara dalam pasangan indeks yang mengandungi aksara tidak sama dalam rentetan B dan menjadikan rentetan itu sebagai palindrom. Jika tidak, kami kembali palsu.
Algoritma
Langkah 1 - Laksanakan fungsi utiliti() dan tukar aksara mengikut syarat yang diberikan untuk menentukan sama ada rentetan itu boleh menjadi palindrom dengan menukar aksara.
Langkah 2 - Tentukan fungsi canBePalindromic() untuk menyemak sama ada kita boleh membina sebarang rentetan palindrom menggunakan aksara str.
Langkah 2.1 − Buat peta yang menyimpan setiap aksara dalam rentetan str dan kekerapannya. Gunakan gelung for untuk melelaran melalui rentetan dan mengira kekerapan aksara.
Langkah 2.2 - Kira bilangan aksara dengan frekuensi genap dan ganjil.
Langkah 2.3 - Gunakan set untuk mendapatkan jumlah bilangan aksara unik dalam rentetan.
Langkah 2.4 − Kembalikan benar jika panjang rentetan adalah ganjil dan mengandungi hanya satu aksara dengan kekerapan ganjil.
Langkah 2.5 − Jika panjang rentetan genap, maka semua aksara dengan kekerapan genap dan 0 aksara dengan kekerapan ganjil, kembali benar.
Langkah 2.6 − Kembalikan palsu.
Langkah 3 - Jika rentetan itu tidak boleh menjadi palindrom, kembalikan palsu.
Langkah 4 - Jika rentetan B mengandungi berbilang '1' dan '0', kembalikan benar;
Contoh
#include <bits/stdc++.h> using namespace std; // function to check if the string can be palindromic bool canBePalindromic(string str){ //Creating the map to store the frequency of each character map<char, int> charMap; // store the frequency of each character of string Str for (int i = 0; i < str.length(); i++) { charMap[str[i]] += 1; } // to store the count of even and odd frequent characters int even = 0, odd = 0; // iterate through the map for (auto e : charMap) { //If frequency is odd, increment odd count; else, increment even count if (e.second % 2 == 1) { odd++; } else { even++; } } // set to store unique characters of string Str unordered_set<char> set; //Insert all characters of string Str in set for (int i = 0; i < str.size(); i++){ set.insert(str[i]); } // if the string length is odd and only one character has an odd frequency, return true if (str.size() % 2 == 1 && even == set.size() - 1 && odd == 1){ return true; } // If the string length is even and all characters have even frequency, return true if (str.size() % 2 == 0 && even == set.size() && odd == 0){ return true; } // else return false return false; } // function to check if the string can be palindromic by swapping characters according to string B bool utility(string S, string B){ // If string S cannot be palindromic, return false. if (canBePalindromic(S) == false){ return false; } else{ // if at least one '1' and '0' is present in string B, string S can be palindromic int one = 0, zero = 0; for (int i = 0; i < B.size(); i++) { // If the current character is '0.' if (B[i] == '0'){ zero++; } else { one++; } } // return true if at least one '1' and '0' is present in the string B if (one >= 1 && zero >= 1){ return true; } else { return false; } } } int main(){ string S = "NANA"; string B = "0001"; bool result = utility(S, B); if (result) cout << "Yes"; else cout << "No"; return 0; }
Output
Yes
Kerumitan masa - O(NlogN), kerana kami menggunakan gelung for untuk melintasi rentetan, dan kaedah insert() set mengambil masa (logN).
Kerumitan Ruang - O(K), dengan K ialah jumlah bilangan aksara unik.
Kaedah 2
Dalam kaedah ini, daripada menggunakan peta, kami akan menggunakan tatasusunan untuk menyimpan kekerapan aksara.
Algoritma
Langkah 1 - Buat tatasusunan 'charFrequancy' dengan panjang 26 dan mulakannya kepada sifar.
Langkah 2 - Kira jumlah bilangan 1 dan 0 dalam rentetan B.
Langkah 3 - Kemas kini kekerapan setiap aksara dalam tatasusunan.
Langkah 4 - Jika panjang rentetan genap dan frekuensi ganjil bukan sifar, kembalikan palsu.
Langkah 5 - Jika panjang rentetan ganjil dan frekuensi ganjil lebih besar daripada 1, kembalikan palsu.
Langkah 6 - Kembalikan benar jika kedua-dua 1 dan 0 wujud dalam rentetan.
Langkah 7 - Kembalikan palsu.
Contoh
#include <bits/stdc++.h> using namespace std; // function to check if the given string can be converted to a palindrome bool utility(string str, string B){ // array to store character counts in str int charFrequancy[26] = {0}; int ones = 0, zeros = 0, odd_fre = 0; // count ones and zeros for (char ch : B) { if (ch == '1') ones++; if (ch == '0') zeros++; } // store counts of characters for (char ch : str){ charFrequancy[ch - 'A']++; } // check total character with odd frequency for (int i = 0; i < 26; i++){ if (charFrequancy[i] % 2 == 1) odd_fre++; } if (str.length() % 2 == 0 && odd_fre != 0) return false; if (str.length() % 2 == 1 && odd_fre > 1) return false; if (ones > 0 && zeros > 0) return true; return false; } int main(){ string S = "NBCNB"; string B = "01010"; if (utility(S, B)){ cout << "Yes"; } else { cout << "No"; } return 0; }
Output
Yes
Kerumitan masa - O(N) kerana kami menggunakan gelung for untuk mengulangi rentetan.
Kerumitan ruang − O(1) kerana kami sentiasa menggunakan tatasusunan panjang 26.
Kesimpulan
Kami mempelajari dua kaedah untuk menyemak sama ada rentetan boleh menjadi palindrom dengan menukar aksara berdasarkan syarat tertentu. Kaedah pertama menggunakan koleksi dan peta, manakala kaedah kedua hanya menggunakan tatasusunan untuk menyimpan data. Kaedah kedua adalah lebih baik daripada kaedah pertama kerana kaedah insert() mengambil masa O(logn) untuk memasukkan data ke dalam koleksi, manakala tatasusunan hanya mengambil masa O(1).
Atas ialah kandungan terperinci Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari. 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



Ruang swap memainkan peranan penting dalam sistem Linux, terutamanya apabila sistem kekurangan ingatan. Ia bertindak sebagai ruang storan memori sandaran yang membantu sistem berjalan dengan lancar dan mengekalkan kestabilan walaupun di bawah beban yang tinggi. Artikel ini memberi anda panduan terperinci untuk menambah ruang swap pada Ubuntu 22.04LTS untuk memastikan prestasi sistem anda dioptimumkan dan boleh mengendalikan pelbagai beban kerja. Memahami Ruang Swap Space Swap menyediakan memori maya yang digunakan untuk menambah RAM fizikal sistem. Apabila sistem kekurangan RAM, kernel menukar data ke cakera untuk mengelakkan kehabisan memori dan sistem ranap. Sistem Linux biasanya menggunakan ruang swap untuk mengendalikan situasi ini. Jalankan berbilang aplikasi intensif memori secara serentak untuk memproses fail atau data yang sangat besar

Matriks ialah susunan nombor dua dimensi yang disusun dalam baris dan lajur. Python tidak mempunyai sebarang jenis data untuk mewakili matriks, tetapi kita boleh menggunakan senarai bersarang atau tatasusunan NumPy sebagai matriks. Lihat senario input dan output berikut untuk melihat cara menukar elemen lajur pertama dan terakhir matriks. Senario Input-Output Katakan kita mempunyai matriks 3X3 yang diwakili menggunakan senarai senarai. Matriks keluaran akan menjadi matriks yang terhasil daripada menukar elemen lajur pertama dan terakhir. Inputmatrix:[1,3,4][4,5,6][7,8,3]Outputmatrix:[4,3,1][4,5,6][3,8,7]Mari kita pertimbangkan yang lain Matriks yang baris dan lajurnya tidak sama. Inputmatriks:

Dalam masalah ini, kita perlu mencari urutan tidak bertambah terpanjang bagi rentetan yang diberikan. Tidak bertambah bermakna aksara sama ada sama atau dalam susunan menurun. Memandangkan rentetan binari hanya mengandungi "0" dan "1", rentetan yang terhasil hendaklah sama ada bermula dengan "1" dan berakhir dengan "0", atau bermula dan berakhir dengan "0" atau "1". Untuk menyelesaikan masalah ini, kami akan mengira awalan "1" dan akhiran "0" pada setiap kedudukan rentetan dan mencari jumlah maksimum awalan "1" dan akhiran "0". Pernyataan Masalah - Kami diberi rentetan binari str. Kita perlu mencari urutan tidak bertambah terpanjang daripada rentetan yang diberikan. Contoh Input–str="010100"Output–4 menggambarkan bukan rekursif terpanjang

Dalam masalah yang diberikan, kita diberi rentetan yang terdiri daripada 0 dan 1 kita perlu mencari jumlah bilangan semua pilih atur bermula dengan 1. Oleh kerana jawapannya mungkin jumlah yang besar, kami mengambilnya modulo 1000000007 dan mengeluarkannya. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Kami akan menyelesaikan masalah ini dengan menggunakan beberapa matematik gabungan dan menyediakan beberapa formula. Kaedah Penyelesaian Dalam kaedah ini kita akan mengira bilangan 0 dan 1. Sekarang andaikan n ialah nombor 1 yang muncul dalam rentetan kami dan m ialah bilangan 0 yang muncul dalam rentetan kami

Fungsi pack() mengemas data ke dalam rentetan binari. Pek sintaks(format,args) Format parameter - format untuk digunakan. Berikut ialah nilai yang mungkin - a - rentetan berlapik NUL A - rentetan empuk ruang h - rentetan perenambelasan, nibble rendah dahulu H - rentetan perenambelasan, nibble tinggi dahulu c - char C yang ditandatangani - char s yang tidak ditandatangani - ditandatangani pendek (sentiasa 16 bit , pesanan bait mesin) S - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait mesin) n - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian besar) v - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian kecil) i - integer bertanda (bergantung pada saiz mesin dan susunan bait) I - Tiada integer yang ditandatangani (bergantung pada

Katakan kita mempunyai matriks nxn. Setiap elemen dalam matriks adalah unik dan integer antara 1 dan n2. Sekarang kita boleh melakukan operasi berikut dalam sebarang nombor dan dalam sebarang susunan. Kami memilih mana-mana dua integer x dan y dalam matriks, di mana (1≤x

Pernyataan Masalah Kami mempunyai rentetan str dan rentetan binari B. Panjang kedua-dua rentetan adalah sama dengan N. Kita perlu menyemak sama ada kita boleh membuat rentetan str rentetan palindrom dengan menukar aksaranya beberapa kali pada mana-mana pasangan indeks yang mengandungi aksara tidak sama dalam rentetan B. Contoh Contoh Input str='AAS' B='101' Output 'YA' Terjemahan Cina bagi Penjelasan ialah: Penjelasan Kita boleh menukar str[1] dan str[2] kerana B[1] dan B[2] tidak sama . Rentetan akhir boleh menjadi 'ASA'. Input str=‘AASS’ B=‘1111’ dan keluaran ‘No’ Terjemahan Bahasa Cina bagi Explanation ialah: Penjelasan bahawa kita tidak boleh membuat string palindrom,

Tujuan artikel ini adalah untuk melaksanakan program untuk mengira bilangan rentetan binari panjang N yang dibentuk oleh penggabungan berulang subrentetan. Matlamatnya adalah untuk menentukan bilangan rentetan perduaan panjang N boleh dicipta dengan berulang kali menggabungkan subrentetan individu bagi teks yang diberikan, dengan N ialah integer positif. Pernyataan Masalah Laksanakan atur cara yang mengira bilangan rentetan binari panjang N yang menggabungkan subrentetan berulang kali. Contoh Contoh 1 Letus mengambil Input, N = 3 Output: 2 Terjemahan Cina bagi Penjelasan ialah: Penjelasan Berikut menyenaraikan rentetan binari yang boleh dilaksanakan dengan panjang N = 3, di mana subrentetan berulang kali digabungkan. "000":Thesubstr
