


Program rekursif untuk memasukkan asterisk antara sepasang aksara yang sama dalam C++
Diberi rentetan str1 sebagai input. Matlamatnya adalah untuk memasukkan "*" antara sepasang aksara yang sama dalam rentetan input dan mengembalikan rentetan yang terhasil menggunakan kaedah rekursif.
Jika rentetan input ialah str1 = "kesejahteraan", maka outputnya ialah "wel*lnes*s"
Contoh
Input - str1 = "kebahagiaan"🜎
Tambah kebahagian * Rentetan yang terhasil: hap*pines*sPenjelasan
- Menambah * antara pp dan ss akan mendapat rentetan yang terhasilhap*pines*sEnter
- str1 = "pooommmingggg- Rentetan selepas menambah *: berenang*m*m*ming*g*g*g po*o*o*ol
Penjelasan - Menambah * antara mm, gg dan oo akan mendapat keputusan Rentetan
berenang* m*m*ming*g*g*g po*o*o*olKaedah yang digunakan dalam program berikut adalah seperti berikutDalam kaedah ini, ambil rentetan str1. Dalam setiap lelaran, str1 dibahagikan kepada dua bahagian dengan indeks semasa sebagai titik tengah. Jika aksara terakhir subrentetan pertama adalah sama dengan aksara pertama subrentetan seterusnya, maka rentetan asal ditetapkan kepada subrentetan 1 diikuti dengan "*", diikuti dengan subrentetan 2. Jika panjang subrentetan 2 ialah 0, rekursi tamat.
Ambil rentetan input sebagai str1 dan hitung panjangnya sebagai len.
Fungsi addStar(rentetan& s1, int i, int len1) menerima s1, panjangnya dan indeks semasa sebagai input dan menambah * apabila kedua-dua pasangan aksara adalah sama.
Ambil tmp1 sebagai subrentetan daripada indeks 0 hingga i.
Ambil tmp2 sebagai subrentetan daripada indeks i kepada len1+1.
Jika aksara terakhir tmp1 adalah sama dengan aksara pertama tmp2, tetapkan s1=tmp1+’*’+tmp2.
Panggil addStar(s1, i+1, len1) untuk lelaran seterusnya.
Akhirnya cetak str1 dalam fungsi utama.
-
Contoh
#include <iostream> using namespace std; void addStar(string& s1, int i, int len1){ string tmp1=s1.substr(0,i); string tmp2=s1.substr(i,len1+1); if (tmp2.length() == 0){ return; } if (tmp1[i-1] == tmp2[0]){ s1 = tmp1 + '*' + tmp2; } addStar(s1, i+1, len1); } int main(){ string str1 = "aabbcccdddd"; int len=str1.length(); addStar(str1, 0, len-1); cout << "String after adding * : "<<str1 << endl; return 0; }
Salin selepas log masukOutput
Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut
String after adding * : a*ab*bc*c*cd*d*d*d
Atas ialah kandungan terperinci Program rekursif untuk memasukkan asterisk antara sepasang aksara yang sama 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

Artikel ini menerangkan Perpustakaan Templat St Standard (STL), yang memberi tumpuan kepada komponen terasnya: bekas, iterator, algoritma, dan functors. Ia memperincikan bagaimana ini berinteraksi untuk membolehkan pengaturcaraan generik, meningkatkan kecekapan kod dan kebolehbacaan t

Artikel ini memperincikan penggunaan algoritma STL yang cekap dalam c. Ia menekankan pilihan struktur data (vektor vs senarai), analisis kerumitan algoritma (mis., Std :: Sort vs Std :: partial_sort), penggunaan iterator, dan pelaksanaan selari. Perangkap biasa seperti

Artikel ini membincangkan penghantaran dinamik dalam C, kos prestasinya, dan strategi pengoptimuman. Ia menyoroti senario di mana penghantaran dinamik memberi kesan kepada prestasi dan membandingkannya dengan penghantaran statik, menekankan perdagangan antara prestasi dan

Artikel ini butiran pengendalian pengecualian yang berkesan di C, meliputi percubaan, menangkap, dan membuang mekanik. Ia menekankan amalan terbaik seperti RAII, mengelakkan blok tangkapan yang tidak perlu, dan pengecualian pembalakan untuk kod yang mantap. Artikel ini juga menangani perf

C 20 julat meningkatkan manipulasi data dengan ekspresi, komposiliti, dan kecekapan. Mereka memudahkan transformasi kompleks dan mengintegrasikan ke dalam kod sedia ada untuk prestasi dan kebolehkerjaan yang lebih baik.

Artikel ini membincangkan menggunakan semantik Move dalam C untuk meningkatkan prestasi dengan mengelakkan penyalinan yang tidak perlu. Ia meliputi pelaksanaan pembina bergerak dan pengendali tugasan, menggunakan STD :: bergerak, dan mengenal pasti senario utama dan perangkap untuk Appl yang berkesan

Artikel membincangkan penggunaan rujukan RValue yang berkesan dalam C untuk bergerak semantik, pemajuan sempurna, dan pengurusan sumber, menonjolkan amalan terbaik dan penambahbaikan prestasi. (159 aksara)

Pengurusan memori C menggunakan petunjuk baru, memadam, dan pintar. Artikel ini membincangkan manual vs pengurusan automatik dan bagaimana penunjuk pintar menghalang kebocoran memori.
