กำหนดสองสตริง str_1 และ str_2 เป้าหมายคือการนับจำนวนการเกิดขึ้นของสตริงย่อย str2 ในสตริง str1 โดยใช้กระบวนการแบบเรียกซ้ำ
ฟังก์ชันแบบเรียกซ้ำคือฟังก์ชันที่มีการเรียกในคำจำกัดความของตัวเอง
ถ้า str1 คือ “ฉันรู้ว่าคุณรู้ว่าฉันรู้” str2=”know”
จำนวนการเกิดขึ้นคือ − 3
ให้เราเข้าใจด้วยตัวอย่าง
ตัวอย่าง
อินพุต
str1 = "TPisTPareTPamTP", str2 = "TP";
ผลลัพธ์
Count of occurrences of a substring recursively are: 4
คำอธิบาย
The substring TP occurs 4 times in str1.
อินพุต
str1 = "HiHOwAReyouHiHi" str2 = "Hi"
ผลลัพธ์
Count of occurrences of a substring recursively are: 3
คำอธิบาย
The substring Hi occurs 3 times in str1.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้ −
ในแนวทางนี้ เราจะค้นหาการเกิดขึ้นของ str2 ใน str1 โดยใช้วิธี contain() ในจาวา มันจะคืนค่าเป็นจริงหากมี str2 ใน str1 ในกรณี true ให้ลบการเกิดขึ้นครั้งแรกออกจาก str1 โดยแทนที่ด้วย “” โดยใช้วิธี replaceFirst() ใน java และเพิ่ม 1 เพื่อคืนค่าเพื่อเพิ่มจำนวน
-
ใช้สองสตริงเป็น str1 และ str2
-
Recursive Method subsrting_rec(String str, String sub) รับสตริง str และสตริงย่อยของสตริงย่อยและส่งกลับจำนวนครั้งของการเกิดย่อยใน str
-
ตรวจสอบว่า str.contains(sub) เป็นจริงหรือไม่ ( str มีย่อย )
-
หากเป็น true ให้แทนที่การเกิดขึ้นครั้งแรกของ sub ด้วย “” โดยใช้ str.replaceFirst(sub,””)
-
ทำสิ่งนี้ในการเรียกซ้ำไปยัง subsrting_rec(String str, String sub)
-
เมื่อสิ้นสุดการเรียกซ้ำทั้งหมด ระบบจะนับผลรวมของค่าที่ส่งกลับทั้งหมด
-
พิมพ์ผลลัพธ์
ตัวอย่าง
public class recursive{ public static void main(String args[]){ String str1 = "TPisTPareTPamTP", str2 = "TP"; System.out.println("Count of occurrences of a substring recursively are: "+subsrting_rec(str1, str2)); } static int subsrting_rec(String str, String sub){ if (str.contains(sub)){ return 1 + subsrting_rec(str.replaceFirst(sub, ""), sub); } return 0; } }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of occurrences of a substring recursively are: 4