


Susun semula aksara dalam rentetan supaya mana-mana dua aksara bersebelahan berbeza, dilaksanakan dalam C++
Kami diberi rentetan, andaikan ia adalah str, panjangnya boleh menjadi apa-apa nilai. Tugasnya adalah untuk menyusun semula rentetan yang diberikan supaya aksara bersebelahan yang sama tidak berbaris bersama dalam rentetan yang terhasil.
Mari kita lihat pelbagai senario input dan output:
Input − String str = "itinn"
Output − Susun semula aksara dalam rentetan supaya dua aksara yang bersebelahan, hasilnya tidak sama. initn.
Penjelasan − Kami diberi pembolehubah jenis rentetan, dengan mengandaikan ia adalah str. Sekarang kita akan menyusun semula aksara rentetan input supaya tiada dua aksara yang sama muncul dalam kedudukan yang sama, iaitu alihkan 'nn' ke kedudukan bukan bersebelahan. Jadi keputusan akhir ialah Rentetan itu akan menjadi 'initn'.
Input − String str = "abbaabbaa"
Output − Aksara dalam rentetan itu disusun semula supaya aksara bersebelahan berbeza: ababababa
diberikan Webabababa pembolehubah jenis rentetan, dengan mengandaikan ia adalah str. Sekarang kita akan menyusun semula aksara rentetan input supaya tiada dua aksara yang sama muncul dalam kedudukan yang sama iaitu gerakkan 'bb', 'aa', 'bb', 'aa' kerana ia adalah sama dan bersebelahan . Jadi rentetan terakhir akan menjadi 'ababababa'.
Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut
Masukkan pembolehubah jenis rentetan, dengan mengandaikan ia adalah str, dan hitung saiz rentetan dan simpannya dalam pembolehubah bernama panjang.
Periksa sama ada panjang adalah 0, kemudian kembali.
Hantar data ke fungsi Susunan Semula(str, panjang).
-
Di dalam fungsi Penyusunan Semula(arr, panjang)
menetapkan saiz rentetan kepada (panjang + 1)/2.
Isytiharkan pembolehubah jenis vektor vec(26, 0), yang akan menyimpan data jenis integer dan penunjuk jenis rentetan ptr(panjang, ‘ ‘). Juga mengisytiharkan temp pembolehubah sementara, jenis integer dan nilai 0.
Mulakan gelung UNTUK untuk lelaran str. Di dalam gelung, tetapkan vec[it - ‘a’]++.
Buat pembolehubah jenis aksara ch dan tetapkannya kepada hasil panggilan fungsi maksimum(vec).
Isytiharkan jumlah pembolehubah jenis integer dan tetapkannya kepada vec[ch - ‘a’].
Periksa jika jumlah lebih besar daripada saiz kemudian kembalikan.
Mulakan gelung WHILE jumlah, kemudian tetapkan ptr[temp] kepada ch, tetapkan suhu kepada suhu + 2 dan turunkan jumlah sebanyak 1.
Tetapkan vec[ch - 'a'] kepada 0. Mulakan gelung FOR dari i ke 0 sehingga i kurang daripada 26. Di dalam gelung, mulakan gelung while, apabila vec[i] lebih besar daripada 0, tetapkan temp kepada (temp >= length) 1: temp, set ptr[temp] kepada 'a' + i, set temp to temp + 2, dan susut vec[i] sebanyak 1.
Kembalikan ptr
-
Di dalam fungsi char maximum(const vector
& vec) isytihar pembolehubah jenis integer 0 dan tetapkan a kepada ubah jenis integer c. dan tetapkan a kepada ubah jenis integer c.
Mulakan gelung FOR dari i ke 0 sehingga i kurang daripada 26. Di dalam gelung, semak sama ada vec[i] kurang daripada tinggi, kemudian tetapkan tinggi kepada vec[i] dan c kepada 'a' + i.
Kembali ke c
Cetak hasil.
Contoh
#include <bits/stdc++.h> using namespace std; char maximum(const vector<int>& vec){ int high = 0; char c; for(int i = 0; i < 26; i++){ if(vec[i] > high){ high = vec[i]; c = 'a' + i; } } return c; } string Rearrangement(string str, int length){ int size = (length + 1) / 2; vector<int> vec(26, 0); string ptr(length, ' '); int temp = 0; for(auto it : str){ vec[it - 'a']++; } char ch = maximum(vec); int total = vec[ch - 'a']; if(total > size){ return ""; } while(total){ ptr[temp] = ch; temp = temp + 2; total--; } vec[ch - 'a'] = 0; for(int i = 0; i < 26; i++){ while (vec[i] > 0){ temp = (temp >= length) ? 1 : temp; ptr[temp] = 'a' + i; temp = temp + 2; vec[i]--; } } return ptr; } int main(){ string str = "itinn"; int length = str.length(); if(length == 0){ cout<<"Please enter a valid string"; } string count = Rearrangement(str, length); if(count == ""){ cout<<"Please enter a valid string"; } else{ cout<<"Rearrangement of characters in a string such that no two adjacent are same is: "<<count; } return 0; }
Output
Jika kita menjalankan kod di atas, output berikut akan dihasilkan
Rearrangement of characters in a string such that no two adjacent are same is: initn
Atas ialah kandungan terperinci Susun semula aksara dalam rentetan supaya mana-mana dua aksara bersebelahan berbeza, dilaksanakan dalam C++. 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



Dalam artikel ini, kita akan membincangkan cara mengubah suai rentetan yang diberikan dalam C++ dengan menyusun semula huruf vokal mengikut abjad pada indeks masing-masing. Kami juga akan menerangkan kaedah yang digunakan untuk menyelesaikan masalah ini dan memberikan contoh dengan kes ujian. Pernyataan Masalah Diberi rentetan, susun semula vokal pada indeks masing-masing mengikut susunan abjad. Konsonan dalam rentetan harus mengekalkan susunan asalnya. Sebagai contoh, memandangkan rentetan "tutorialspoint", output mestilah "tatiriolspount". Kaedah Masalah ini boleh diselesaikan menggunakan algoritma mudah. Mula-mula kita boleh mencipta rentetan berasingan yang mengandungi semua vokal dalam rentetan yang diberikan dalam susunan masing-masing. Kemudian kita boleh mengisih rentetan itu mengikut abjad. akhirnya,

Kami telah diberi 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 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="

Memanipulasi rentetan adalah penting dalam pelbagai senario penyelesaian masalah. Pilih atur rentetan yang diberikan didapati mengoptimumkan bilangan aksara yang lebih besar daripada bilangan aksara bersebelahan Ini adalah teka-teki yang menarik yang memerlukan penyusunan semula aksara rentetan untuk menjana sebanyak mungkin pasangan aksara bersebelahan, di mana aksara pada. kiri lebih kecil daripada aksara di sebelah kanan . Kaedah Terdapat beberapa cara untuk menyelesaikan pilih atur rentetan di mana bilangan maksimum aksara adalah lebih besar daripada bilangan aksara yang bersebelahan langsung dengannya. Kaedah 1-Kaedah Penjejakan Belakang dan Pemangkasan 2-Kaedah Pengaturcaraan Dinamik 3-Kaedah Algoritma Timbunan 4- Susunan Kamus dengan Pemangkasan-Kaedah 1: Penjejakan Belakang dan Pemangkasan Gunakan algoritma penjejakan ke belakang untuk menjana semua pilih atur rentetan. Pada setiap langkah, semak sama ada susunan semasa mempunyai lebih banyak aksara daripada jirannya yang lebih besar daripada maksimum yang ditemui setakat ini. Jika tidak, cantas awal

Kami diberi rentetan, katakan str, panjangnya boleh menjadi sebarang nilai. Tugasnya adalah untuk menyusun semula rentetan yang diberikan supaya aksara bersebelahan yang sama tidak berbaris bersama dalam rentetan yang terhasil. Mari kita lihat pelbagai senario input dan output: input - string str="itinn" output - susun semula aksara dalam rentetan supaya dua aksara bersebelahan berbeza, hasilnya: initn. Penjelasan −Kami diberi pembolehubah jenis rentetan, dengan mengandaikan ia adalah str. Sekarang kita akan menyusun semula aksara rentetan input sedemikian rupa

Kami diberi rentetan 'str' dari mana-mana panjang tertentu. Tugasnya adalah untuk menyusun semula aksara supaya output menjadi rentetan palindrom tanpa menambah atau mengalih keluar aksara daripada rentetan input yang diberikan. Rentetan palindrom ialah apabila aksara disusun sedemikian rupa sehingga bunyinya sama dari awal hingga akhir. Mari kita lihat pelbagai senario input dan output untuk ini - Input - String str="itnin" Output - Penyusunan semula aksara untuk membentuk rentetan palindrom jika boleh ialah: nitin Penjelasan - Kami diberi pembolehubah jenis rentetan , diandaikan sebagai str. Sekarang kita akan menyusun semula aksara rentetan input supaya ia menjadi

Kami mempunyai tatasusunan jenis integer positif, katakan arr[], dalam sebarang saiz. Tugasnya adalah untuk menyusun semula tatasusunan supaya apabila kita mendarab unsur dengan unsur bersebelahan dan kemudian menambah semua elemen yang terhasil, jumlah terkecil dikembalikan. Mari kita lihat situasi input dan output yang berbeza: Input -intarr[]={2,5,1,7,5,0,1,0} Output -Susun semula tatasusunan untuk meminimumkan jumlah, yang merupakan hasil darab pasangan berturut-turut unsur Penjelasan untuk: 70505121 - Kami mempunyai tatasusunan integer bersaiz 8. Sekarang, kami akan menyusun semula tatasusunan, iaitu 70505121. Kami akan menyemak sama ada jumlah minimum dikembalikan iaitu 7*0+5*0+5

Bagaimana untuk menyusun semula program dalam menu permulaan sistem win10? Ramai rakan mungkin tidak tahu banyak tentangnya Jika anda tidak tahu bagaimana untuk menyusun semula, editor di bawah telah menyusun kaedah tetapan untuk menyusun semula program dalam menu permulaan sistem win10 Jika anda berminat. Ikuti editor dan lihat di bawah! ! Cara menyusun semula program dalam menu mula dalam sistem win10 1. Kemas kini sistem kepada versi win1010156 untuk menggunakan fungsi ini 2. Klik ikon menu mula, dan kemudian klik [Semua Apl] 3. Masukkan semua program dalam menu mula , dan kemudian klik ikon [&] di bahagian atas, supaya anda boleh memasuki tempat di mana anda menetapkan susunan isihan 4. Pilih huruf awal atau

Dalam soalan ini, kami akan melaksanakan pertanyaan yang diberikan pada elemen tatasusunan. Pertanyaan mengandungi gelung putaran kiri, putaran kanan dan kemas kini elemen tatasusunan. Bahagian logik untuk menyelesaikan masalah ialah putaran tatasusunan. Cara mudah untuk memutar tatasusunan ke kiri ialah menggantikan setiap elemen dengan elemen seterusnya dan elemen terakhir dengan elemen pertama. Kita boleh menggunakan struktur data deque untuk memutar tatasusunan dengan cekap. Pernyataan Masalah - Kami diberi tatasusunan arr[] yang mengandungi nilai integer. Selain itu, kami diberi tatasusunan permintaan[] yang mengandungi pertanyaan K. Kita perlu melaksanakan setiap pertanyaan yang diberikan dalam permintaan[] pada elemen tatasusunan arr[] mengikut peraturan berikut. {0} - Melakukan putaran kiri bulat pada tatasusunan. {1)-Bulatkan tatasusunan
