我有如下蛮力字符串模式搜索算法:
public static int brute(String text,String pattern) {
int n = text.length(); // n is length of text.
int m = pattern.length(); // m is length of pattern
int j;
for(int i=0; i <= (n-m); i++) {
j = 0;
while ((j < m) && (text.charAt(i+j) == pattern.charAt(j)) ) {
j++;
}
if (j == m)
return i; // match at i
}
return -1; // no match
} // end of brute()
在分析上述算法时,作者提到了最坏情况和平均情况。
我了解最坏情况下的性能,但平均而言,作者如何获得 O(m+n) 性能?在这里需要帮助。
在最坏的情况下,蛮力模式匹配在 O(mn) 时间内运行。
大多数普通文本的搜索平均需要 O(m+n),这非常快。
一个更普通的例子:T:“一个字符串搜索的例子是标准的”P:“商店”
感谢您的时间和帮助