Java中遞迴計數子字串出現次數


給定兩個字串str_1和str_2。目標是使用遞迴方法計算字串str2在字串str1中出現的次數。

遞迴函式是在其定義內部包含自身呼叫的函式。

如果str1是“I know that you know that i know”,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.

以下程式中使用的演算法如下

在這種方法中,我們將使用Java中的contains()方法搜尋str2在str1中的出現情況。如果str2存在於str1中,則返回true。如果為true,則使用Java中的replaceFirst()方法將其第一個出現替換為“”來從str1中移除它,並將1新增到返回值以增加計數。

  • 將兩個字串作為str1和str2。

  • 遞迴方法subsrting_rec(String str, String sub)接受字串str及其子字串sub,並返回sub在str中出現的次數。

  • 檢查str.contains(sub)是否為真。(str包含sub)

  • 如果為真,則使用str.replaceFirst(sub,“”)將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

更新於:2021年1月5日

9K+瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.