Jadual Kandungan
例如
下面的程序中使用的方法如下
示例
输出
Rumah pembangunan bahagian belakang C++ Fungsi rekursif untuk carian subrentetan dalam C++

Fungsi rekursif untuk carian subrentetan dalam C++

Aug 31, 2023 am 10:29 AM
fungsi rekursi carian subrentetan

Fungsi rekursif untuk carian subrentetan dalam C++

给定两个字符串 Str 和 subStr 作为输入。目标是确定 subStr 中存在的文本是否作为子字符串存在于 Str 中。如果整个 X 在 Y 中至少出现一次,则字符串 X 称为 Y 的子串。 我们将使用递归方法来执行此操作。

例如

输入− Str = “tutorialspoint” subStr=”Point”

输出− 给定字符串不包含子字符串!

解释− 字符串 Point 不是教程点的子字符串

输入− Str = “globalization” subStr=”global”

输出− 给定字符串包含子字符串!

解释 - 字符串global是全球化的子字符串

下面的程序中使用的方法如下

在这种方法中,我们以递归方式检查subStr是否是Str的子字符串。递归的步骤为:-

  • 1.将两个字符串传递给递归函数,其中指针将指向两个字符串的当前字符位置

  • 如果字符串结束但模式还剩下更多字符,则返回 0,因为未找到模式我们到达了字符串的末尾。

  • 如果当前字符是模式中的最后一个字符,则在字符串中找到它,返回 1。

    li>
  • 如果两个当前字符相同,则将两个指针移动到下一个位置。

  • 如果两个当前字符不匹配,则将指针移动到下一个位置。将字符串移动到下一个位置。

  • 将输入字符串作为字符数组 Str 和 subStr。

  • 函数 match(char *str1, char *substr1) 接受两个子字符串,如果 substr1 和 str1 相同,则返回 1。

  • 两个指针都指向字符串中存在的字符,最初位于起始位置。

  • 如果 substr 为空,则返回 0。

  • 如果两个字符串都为空,则也返回 0。

  • 如果两个字符串都为空,则也返回 0。 >

  • 如果两个当前字符相等,则使用 match(str1 + 1, substr1 + 1) 递归检查下一个字符

  • 函数 checksubString (char *str2, char *substr2) 接受两个字符串,如果 str2 中存在 substr2,则返回 1。

  • 如果 str2 和 substr2 指向的当前字符相同,则检查是否连续的字符也可以使用 match() 函数进行匹配。如果返回 1,则返回 1。

  • 如果到达 str2 的末尾,则返回 0。

  • 否则递归检查str2 的下一个字符使用 checksubString(str2 + 1, substr2);

  • 如果所有条件都失败,则还使用递归检查 checksubString(str2 + 1, substr2);

  • 根据返回值打印结果。

示例

#include<iostream>
using namespace std;
int match(char *str1, char *substr1){
   if (*substr1 == &#39;\0&#39;){
      return 1;
   }
   if (*str1 == &#39;\0&#39;){
      if(*substr1 != &#39;\0&#39;){
         return 0;
      }
   }
   if (*str1 == *substr1){
      return match(str1 + 1, substr1 + 1);
   }
   return 0;
}
int checksubString(char *str2, char *substr2){
   if (*str2 == *substr2){
      if(match(str2, substr2)){
         return 1;
      }
   }
   if (*str2 == &#39;\0&#39;){
      return 0;
   }
   else{
      return checksubString(str2 + 1, substr2);
   }

   return checksubString(str2 + 1, substr2);
}
int main(){
   char Str[]="tutorialspoint";
   char subStr[]="point";

   if(checksubString(Str,subStr)==1){
      cout << "Given string contains substring!";
   }
   else{
      cout << "Given string does not contain substring!"; }
   return 0;
}
Salin selepas log masuk

输出

如果我们运行上面的代码,它将生成以下输出

Given string contains substring!
Salin selepas log masuk

Atas ialah kandungan terperinci Fungsi rekursif untuk carian subrentetan dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Apr 25, 2024 pm 02:39 PM

Bahasa Go menyediakan dua teknologi penciptaan fungsi dinamik: penutupan dan refleksi. penutupan membenarkan akses kepada pembolehubah dalam skop penutupan, dan refleksi boleh mencipta fungsi baharu menggunakan fungsi FuncOf. Teknologi ini berguna dalam menyesuaikan penghala HTTP, melaksanakan sistem yang sangat boleh disesuaikan dan membina komponen boleh pasang.

Pertimbangan untuk susunan parameter dalam penamaan fungsi C++ Pertimbangan untuk susunan parameter dalam penamaan fungsi C++ Apr 24, 2024 pm 04:21 PM

Dalam penamaan fungsi C++, adalah penting untuk mempertimbangkan susunan parameter untuk meningkatkan kebolehbacaan, mengurangkan ralat dan memudahkan pemfaktoran semula. Konvensyen susunan parameter biasa termasuk: tindakan-objek, objek-tindakan, makna semantik dan pematuhan perpustakaan standard. Susunan optimum bergantung pada tujuan fungsi, jenis parameter, kemungkinan kekeliruan dan konvensyen bahasa.

Bagaimana untuk menulis fungsi yang cekap dan boleh diselenggara di Jawa? Bagaimana untuk menulis fungsi yang cekap dan boleh diselenggara di Jawa? Apr 24, 2024 am 11:33 AM

Kunci untuk menulis fungsi Java yang cekap dan boleh diselenggara ialah: pastikan ia mudah. Gunakan penamaan yang bermakna. Mengendalikan situasi khas. Gunakan keterlihatan yang sesuai.

Penjelasan terperinci tentang rekursi fungsi C++: aplikasi rekursi dalam pemprosesan rentetan Penjelasan terperinci tentang rekursi fungsi C++: aplikasi rekursi dalam pemprosesan rentetan Apr 30, 2024 am 10:30 AM

Fungsi rekursif ialah teknik yang memanggil dirinya berulang kali untuk menyelesaikan masalah dalam pemprosesan rentetan. Ia memerlukan syarat penamatan untuk mengelakkan rekursi tak terhingga. Rekursi digunakan secara meluas dalam operasi seperti pembalikan rentetan dan pemeriksaan palindrom.

Koleksi lengkap formula fungsi excel Koleksi lengkap formula fungsi excel May 07, 2024 pm 12:04 PM

1. Fungsi SUM digunakan untuk menjumlahkan nombor dalam lajur atau sekumpulan sel, contohnya: =SUM(A1:J10). 2. Fungsi AVERAGE digunakan untuk mengira purata nombor dalam lajur atau sekumpulan sel, contohnya: =AVERAGE(A1:A10). 3. Fungsi COUNT, digunakan untuk mengira bilangan nombor atau teks dalam lajur atau sekumpulan sel, contohnya: =COUNT(A1:A10) 4. Fungsi IF, digunakan untuk membuat pertimbangan logik berdasarkan syarat yang ditentukan dan mengembalikan hasil yang sepadan.

Panduan pemula untuk rekursi C++: Membina asas dan membangunkan intuisi Panduan pemula untuk rekursi C++: Membina asas dan membangunkan intuisi May 01, 2024 pm 05:36 PM

Rekursif ialah teknik berkuasa yang membolehkan fungsi memanggil dirinya sendiri untuk menyelesaikan masalah Dalam C++, fungsi rekursif terdiri daripada dua elemen utama: kes asas (menentukan apabila rekursif berhenti) dan panggilan rekursif (memecahkan masalah kepada sub yang lebih kecil. -masalah). Dengan memahami asas dan mempraktikkan contoh praktikal seperti pengiraan faktorial, jujukan Fibonacci dan traversal pokok binari, anda boleh membina gerak hati rekursif anda dan menggunakannya dalam kod anda dengan yakin.

Rekursi fungsi C++ dijelaskan: alternatif kepada rekursi Rekursi fungsi C++ dijelaskan: alternatif kepada rekursi May 01, 2024 pm 04:54 PM

Rekursi ialah teknik di mana fungsi memanggil dirinya sendiri, tetapi mempunyai kelemahan limpahan tindanan dan ketidakcekapan. Alternatif termasuk: pengoptimuman rekursif ekor, di mana pengkompil mengoptimumkan panggilan rekursif ke dalam gelung, yang menggunakan gelung dan bukannya rekursi, yang membolehkan pelaksanaan dijeda dan disambung semula, mensimulasikan tingkah laku rekursif.

C++ Recursion Advanced: Memahami Pengoptimuman Rekursi Ekor dan Aplikasinya C++ Recursion Advanced: Memahami Pengoptimuman Rekursi Ekor dan Aplikasinya Apr 30, 2024 am 10:45 AM

Pengoptimuman rekursif ekor (TRO) meningkatkan kecekapan panggilan rekursif tertentu. Ia menukarkan panggilan rekursif ekor kepada arahan lompat dan menyimpan keadaan konteks dalam daftar dan bukannya pada tindanan, dengan itu menghapuskan panggilan tambahan dan operasi kembali kepada tindanan dan meningkatkan kecekapan algoritma. Menggunakan TRO, kita boleh mengoptimumkan fungsi rekursif ekor (seperti pengiraan faktorial dengan menggantikan panggilan rekursif ekor dengan pernyataan goto, pengkompil akan menukar lompatan goto kepada TRO dan mengoptimumkan pelaksanaan algoritma rekursif).

See all articles