Program rekursif untuk memasukkan asterisk antara sepasang aksara yang sama dalam C++

WBOY
Lepaskan: 2023-09-04 12:57:13
ke hadapan
1381 orang telah melayarinya

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

Penjelasan

- Menambah * antara pp dan ss akan mendapat rentetan yang terhasil

hap*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*ol

Kaedah 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 + &#39;*&#39; + 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 masuk
  • Output

Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut

String after adding * : a*ab*bc*c*cd*d*d*d
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!