Rumah > pembangunan bahagian belakang > C++ > Susun semula aksara untuk membentuk palindrom (jika boleh) dalam C++

Susun semula aksara untuk membentuk palindrom (jika boleh) dalam C++

王林
Lepaskan: 2023-09-09 15:57:09
ke hadapan
974 orang telah melayarinya

Susun semula aksara untuk membentuk palindrom (jika boleh) dalam C++

Kami diberi rentetan 'str' bagi 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 - Jika boleh, penyusunan semula aksara untuk membentuk rentetan palitin

ialah: rentetan palitin

- Kami diberi pembolehubah jenis rentetan, katakan str. Sekarang kita akan menyusun semula aksara rentetan input untuk menjadikannya rentetan palindrom jika tidak Ia akan kembali 'TIDAK BOLEH' jika boleh. Oleh itu, output yang diberikan rentetan input ialah 'nitin'. . Sekarang kita akan menyusun semula aksara rentetan input untuk menjadikannya rentetan palindrom dan kembalikan 'TIDAK MUNGKIN' jika ini tidak mungkin. Oleh itu, output yang diberikan rentetan input ialah 'aabbaa'.

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.

Hantar data ke fungsi Susunan Semula(str, panjang).

Di dalam fungsi Penyusunan Semula(arr, panjang)

  • buat pembolehubah jenis unordered_map bernama 'um', yang menyimpan pasangan nilai kunci jenis char dan integer.

  • Isytiharkan jumlah pembolehubah jenis integer dan tetapkannya kepada 0.

  • Buat pembolehubah jenis aksara 'ch' dan pembolehubah jenis rentetan str_1 dan str_2.

    • Mulakan dengan gelung dari i hingga 0 sehingga i kurang daripada panjang. Di dalam gelung, tetapkan um[str[i]] dengan menambah nilai 1.

    • Mulakan gelung UNTUK untuk lelaran peta 'um'. Di dalam gelung, periksa JIKA ia.saat % 2 tidak sama dengan 0, kemudian tambahkan jumlah sebanyak 1 dan tetapkan ch padanya.pertama.

    • Semak JIKA jumlah lebih besar daripada 1 atau jumlah = 1 dan panjang % 2 = 0, kemudian 0 dikembalikan.

    • Mulakan gelung UNTUK untuk lelaran peta 'um'. Dalam gelung, str(it.second / 2, it.first) ditetapkan kepada str, str_1 ditetapkan kepada str_1 + str dan str_2 ditetapkan kepada str + str_2.

    • Semak JIKA jumlah = 1, kemudian kembalikan str_1 + ch + str_2. Jika tidak, str_1 + str_2 dikembalikan.

    • Cetak hasilnya.
    • Contoh
    • #include <bits/stdc++.h>
      using namespace std;
      string Rearrangement(string str, int length){
         unordered_map<char, int> um;
         int total = 0;
         char ch;
         string str_1 = "";
         string str_2 = "";
      
         for (int i = 0; i < length; i++){
            um[str[i]]++;
         }
         for(auto it : um){
            if(it.second % 2 != 0){
               total++;
               ch = it.first;
            }
         }
         if(total > 1 || total == 1 && length % 2 == 0){
            return 0;
         }
         for(auto it : um){
            string str(it.second / 2, it.first);
            str_1 = str_1 + str;
            str_2 = str + str_2;
         }
         if(total == 1){
            return str_1 + ch + str_2;
         }
         else{
            return str_1 + str_2;
         }
      }
      int main(){
         string str = "itnin";
         int length = str.size();
         cout<<"Rearrangement of characters to form palindrome if possible is: "<<Rearrangement(str, length);
         return 0;
      }
      Salin selepas log masuk
    • Output

      Jika kita menjalankan kod di atas, output berikut akan dihasilkan
    • Rearrangement of characters to form palindrome if possible is: nitin
      Salin selepas log masuk

Atas ialah kandungan terperinci Susun semula aksara untuk membentuk palindrom (jika boleh) dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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