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+浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告