Computer >> Máy Tính >  >> Lập trình >> Java

Đếm số lần xuất hiện của một chuỗi con một cách đệ quy trong Java


Cho hai chuỗi str_1 và str_2. Mục đích là để đếm số lần xuất hiện của chuỗi con str2 trong chuỗi str1 bằng quy trình đệ quy.

Hàm đệ quy là hàm có lệnh gọi riêng bên trong định nghĩa của nó.

Nếu str1 là "Tôi biết rằng bạn biết rằng tôi biết" str2 ="biết"

Số lần xuất hiện là - 3

Hãy cho chúng tôi hiểu với các ví dụ.

Ví dụ

Đầu vào

str1 = "TPisTPareTPamTP", str2 = "TP";

Đầu ra

Count of occurrences of a substring recursively are: 4

Giải thích

The substring TP occurs 4 times in str1.

Đầu vào

str1 = "HiHOwAReyouHiHi" str2 = "Hi"

Đầu ra

Count of occurrences of a substring recursively are: 3

Giải thích

The substring Hi occurs 3 times in str1.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

Trong cách tiếp cận này, chúng tôi sẽ tìm kiếm sự xuất hiện của str2 trong str1 bằng cách sử dụng phương thức chứa () trong java. Nó sẽ trả về true nếu str2 tồn tại trong str1. Trong trường hợp đúng, hãy xóa lần xuất hiện đầu tiên đó khỏi str1 bằng cách thay thế nó bằng “” bằng cách sử dụng phương thức ReplaceFirst () trong java và thêm 1 vào giá trị trả về để tăng số lượng.

  • Lấy hai chuỗi là str1 và str2.

  • Phương thức đệ quy subsrting_rec (Chuỗi str, Chuỗi con) nhận chuỗi str và chuỗi con của nó và trả về số lần xuất hiện của chuỗi con trong str.

  • Kiểm tra xem str.contains (sub) có đúng không. (str có phụ)

  • Nếu đúng thì thay thế lần xuất hiện đầu tiên của sub bằng “” bằng cách sử dụng str.replaceFirst (sub, ””).

  • Thực hiện điều này bên trong một lệnh gọi đệ quy tới subsrting_rec (Chuỗi str, Chuỗi con).

  • Vào cuối tất cả các đệ quy, tổng của tất cả các giá trị trả về được đếm.

  • In kết quả.

Ví dụ

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;
   }
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of occurrences of a substring recursively are: 4