在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(Stringstr,Stringsub)接受字符串str及其子字符串sub,并返回str中出现sub的次数。
检查是否str.contains(sub)是真的。(str有子)
如果为true,则使用str.replaceFirst(sub,“”)用“”替换第一次出现的sub。
在递归调用中执行此操作subsrting_rec(Stringstr,Stringsub)。
在所有递归的末尾,将计算所有返回值的总和。
打印结果。
示例
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