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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP