📅  最后修改于: 2023-12-03 15:11:17.632000             🧑  作者: Mango
朴素算法是一种基础的模式搜索算法,在实际场景中运用不局限于某一领域。本文将介绍如何用PHP语言实现这种算法。
朴素算法的思路很简单:在主串中对每个字符都与子串做一次匹配。如果匹配成功,就将主串、子串的指针都向后移动一位,否则主串的指针往后移一位,重新开始匹配。
下面是一个用PHP编写的朴素算法程序。我们将主串定义为$str,子串定义为$needle。
function naiveSearch($needle, $str) {
$n = strlen($needle);
$m = strlen($str);
for ($i = 0; $i <= ($m - $n); $i++) {
$j = 0;
while ($j < $n && $str[$i + $j] == $needle[$j]) {
$j++;
}
if ($j == $n) {
return $i;
}
}
return -1;
}
这个函数接收两个参数,分别是子串和主串。它通过嵌套循环在主串中找到与子串匹配的位置,如果找到就返回匹配位置,否则返回-1。
我们可以对上面的函数进行简单的测试:
$needle = 'pattern';
$str0 = 'My name is Pattern and I like PHP.';
$str1 = 'I love Python!';
echo naiveSearch($needle, $str0)."\n";
echo naiveSearch($needle, $str1)."\n";
运行结果为:
11
-1
第一个字符串中匹配到了,而第二个字符串中没有匹配到。
本文简单介绍了朴素算法在PHP中的实现方式,它虽然效率较低,但是易于理解和实现。在实际开发中,如果需要高效匹配,可以考虑使用更加优秀的算法,如KMP算法、Boyer-Moore算法等。