📜  用于模式搜索的朴素算法的PHP程序(1)

📅  最后修改于: 2023-12-03 15:11:17.632000             🧑  作者: Mango

用于模式搜索的朴素算法的PHP程序

朴素算法是一种基础的模式搜索算法,在实际场景中运用不局限于某一领域。本文将介绍如何用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算法等。