📌  相关文章
📜  查找字符串中子字符串出现的次数java(1)

📅  最后修改于: 2023-12-03 14:55:33.638000             🧑  作者: Mango

查找字符串中子字符串出现的次数(Java)

在使用Java编程语言时,我们经常需要在字符串中查找某个子字符串,并计算它在原始字符串中出现的次数。这是一种常见的字符串处理操作,本文将介绍如何在Java中实现该功能。

方法一:使用indexOf()方法

Java的String类提供了一个indexOf()方法来获取子字符串在原始字符串中第一次出现的索引。我们可以利用这个方法来遍历整个字符串,并计算子字符串出现的次数。以下是一个示例代码片段:

public static int countOccurrences(String original, String subString) {
    int count = 0;
    int index = 0;
    
    while ((index = original.indexOf(subString, index)) != -1) {
        count++;
        index += subString.length();
    }
    
    return count;
}

在这个方法中,我们使用了一个while循环来不断查找子字符串在原始字符串中的下一个出现位置。当indexOf()方法返回-1时,表示子字符串已经不存在于原始字符串中,循环结束。每找到一个子字符串,我们就将计数器count加1,并更新起始搜索索引为上一次找到的位置加上子字符串长度。

该方法的时间复杂度为O(n),其中n是原始字符串的长度,因为我们需要遍历整个字符串来查找所有的子字符串。

方法二:使用正则表达式

另一种查找字符串中子字符串出现次数的方法是使用正则表达式。Java中的PatternMatcher类提供了这种功能。以下是一个示例代码片段:

import java.util.regex.*;

public static int countOccurrences(String original, String subString) {
    Pattern pattern = Pattern.compile(Pattern.quote(subString));
    Matcher matcher = pattern.matcher(original);
    
    int count = 0;
    
    while (matcher.find()) {
        count++;
    }
    
    return count;
}

在这个方法中,我们首先将子字符串进行转义,并用Pattern.quote()方法将其包装为一个正则表达式。然后,我们使用Matcher.find()方法在原始字符串中查找匹配正则表达式的子字符串,并计数。

使用正则表达式的方法通常比较灵活,可以处理更复杂的模式匹配需求。但是由于正则表达式的引入,其性能可能会相对较低。

使用示例

下面是一个使用这两种方法的示例:

public class Main {
    public static void main(String[] args) {
        String original = "abababa";
        String subString = "aba";
        
        int count1 = countOccurrences(original, subString);
        int count2 = countOccurrences(original, subString);
        
        System.out.println("方法一:子字符串出现次数为 " + count1);
        System.out.println("方法二:子字符串出现次数为 " + count2);
    }
}

在这个示例中,我们定义了一个原始字符串original和一个子字符串subString,然后分别使用方法一和方法二来计算子字符串出现的次数。最后,我们将结果打印到控制台。

以上是关于如何查找字符串中子字符串出现的次数的介绍。希望对你有所帮助!