在Java中递归计数子字符串的出现

给定两个字符串str_1和str_2。目标是使用递归过程计算字符串str1中子字符串str2的出现次数。

递归函数是在其定义内具有自己的调用的函数。

如果str1是“我知道你知道我知道”,str2 =“知道”

发生数是-3

让我们通过示例来理解。

例如

输入值

str1 = "TPisTPareTPamTP", str2 = "TP";
输出结果
子字符串的递归计数为: 4

说明

The substring TP occurs 4 times in str1.

输入值

str1 = "HiHOwAReyouHiHi" str2 = "Hi"
输出结果
子字符串的递归计数为: 3

说明

The substring Hi occurs 3 times in str1.

以下程序中使用的方法如下-

在这种方法中,我们将使用以下命令搜索str1中str2的出现 contains()Java中的方法。如果str1中存在str2,它将返回true。如果为true,请使用replaceFirst() java中的方法,并将1加到返回值以增加计数。

  • 将两个字符串分别作为str1和str2。

  • 递归方法 subsrting_rec(String str, String sub) 接受字符串str及其子字符串sub,并返回str中出现sub的次数。

  • 检查是否 str.contains(sub)是真的。(str有子)

  • 如果为true,则使用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("子字符串的递归计数为: "+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;
   }
}
输出结果

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

子字符串的递归计数为: 4