Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

นับจำนวนการเกิดขึ้นของสตริงย่อยแบบวนซ้ำใน Java


กำหนดสองสตริง 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