📅  最后修改于: 2023-12-03 15:37:15.196000             🧑  作者: Mango
这是一道关于字符串匹配的问题。
给定一个字符串 text
和一个模式字符串 pattern
,请你判断 pattern
在 text
中出现的次数。
例如,如果 text
是 "abaababaabaab"
,pattern
是 "aaba"
,那么 pattern
在 text
中出现的次数是 3
。
我们可以使用一个滑动窗口,在 text
上滑动,检查每个窗口所包含的子串是否和 pattern
相等。如果相等,就计数器加一。
以下是 Python 代码的实现:
def count_pattern_occurrences(text, pattern):
count = 0
n = len(text)
m = len(pattern)
for i in range(n - m + 1):
if text[i:i + m] == pattern:
count += 1
return count
以下是 Java 代码的实现:
public static int countPatternOccurrences(String text, String pattern) {
int count = 0;
int n = text.length();
int m = pattern.length();
for (int i = 0; i <= n - m; i++) {
if (text.substring(i, i + m).equals(pattern)) {
count++;
}
}
return count;
}
该算法的时间复杂度是 $O(nm)$,其中 $n$ 是 text
的长度,$m$ 是 pattern
的长度。因此,当 $m$ 较大时,该算法的效率会比较差。