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
广告