如何计算java中给定String的重复子串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算java中给定String的重复子串相关的知识,希望对你有一定的参考价值。

在这个例子中,我无法计算给定字符串中的“manoj”......我怎么能这样做..

String text = "manoj kumjjjartiwarimanojmanoj";
char[] line = text.toCharArray();
char[] temp = "manoj".toCharArray();
int count=0;

for (int i =0; i < line.length; i++) {  
    int t =0;
    for (int j = 0; j < temp.length; j++) {
        if(line[i]==temp[j]){
            t=1;
        }
        else{
            t=0;
        }
    }
    if(t==1){
        count=count+1;
    }
}
System.out.println(count);
答案

它可以用各种方法完成,你应该在问之前在Google上搜索这个,但我提供了一个代码

String text = "manoj kumjjjartiwarimanojmanoj";

Pattern p = Pattern.compile("manoj");
Matcher m = p.matcher(text);
int count = 0;
while (m.find())
{
   count +=1;
}
另一答案

您可以直接使用substring类的startsWithString的组合:

String text = "manoj kumjjjartiwarimanojmanoj";
String search = "manoj";

int count = 0;
for (int i=0; i < text.length() - search.length(); i++) {
    if (text.substring(i).startsWith(search)) {
        count++;
    }
}
System.out.println(count);

打印2

这也将计算在“aaaaaa”中搜索“aa”的情况下的所有事件(结果为5)。

另一答案
String pattern="manoj"
String text = "manoj kumjjjartiwarimanojmanoj";
String text2 = text.replaceAll (pattern, "") 
(text.length() - text2.length())/pattern.length ()

结果:3,是否正确?

请注意,生成的manoj,如输入“mamanojnoj”将不会被replaceAll替换,这可能符合您的利益。

以上是关于如何计算java中给定String的重复子串的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 无重复字符的最长子串 java实现

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度

LeetCode算法题-Repeated String Match(Java实现)

计算无重复字符的最长子串

LeetCode--003--无重复字符的最长子串(java)

华为OD机试真题Java实现查找重复代码真题+解题思路+代码(2022&2023)