日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

kmp算法详解php,php中字符串匹配KMP算法实现例子

發布時間:2025/3/19 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kmp算法详解php,php中字符串匹配KMP算法实现例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

KMP算法是一個比較高級的算法了,加了改進了,下面我們來在php中實現KMP算法,希望例子對各位同學會帶來幫助哦。

kmp算法是一種改進的字符串匹配算法,由D.E.Knuth與V.R.Pratt和J.H.Morris同時發現,因此人們稱它為克努特——莫里斯——普拉特操作(簡稱KMP算法)。KMP算法的關鍵是根據給定的模式串W1,m,定義一個next函數。next函數包含了模式串本身局部匹配的信息

例子

?代碼如下復制代碼

/*

字符串匹配KMP算法的PHP語言實現

*/

function KMP($str) {

$K = array(0);

$M = 0;

$strLen = strlen($str);

for($i=1; $i

if ($str[$i] == $str[$M]) {

$K[$i] = $K[$i-1] 1;

$M ;

} else {

$M = 0;

$K[$i] = $K[$M];

}

}

return $K;

}

// KMP查找

function KMPMatch($src, $par) {

$K = KMP($par);

$srcLen = strlen($src);

$parLen = strlen($par);

for($i=0,$j=0; $i

//返回完全匹配的位置

if ($j == $parLen) return $i-$j;

//打印匹配過程

echo $i."? ".$j. " {$src[$i]}-{$par[$j]}
";

if ($par[$j] === $src[$i]) {

//記錄匹配個數

$j ;

$i ;

} else {

if ($j === 0) {

$i ;

}

$j = $K[$j-1 >= 0 ? $j -1 : 0];

}

}

return false;

}

// 測試下是否可用

$src = 'BBC ABCDAB ABCDABCDABDE';

$par = 'ABCDABD';

// 匹配值

echo "部分匹配值:", implode(" ", KMP($par)), "
";

// 在給定的字符串中查找特定字符(串)

echo? KMPMatch($src, $par), "
";

/*

部分匹配值:0 0 0 0 1 2 0

0 0 B-A

1 0 B-A

2 0 C-A

3 0? -A

4 0 A-A

5 1 B-B

6 2 C-C

7 3 D-D

8 4 A-A

9 5 B-B

10 6 -D

10 2 -C

10 0 -A

11 0 A-A

12 1 B-B

13 2 C-C

14 3 D-D

15 4 A-A

16 5 B-B

17 6 C-D

17 2 C-C

18 3 D-D

19 4 A-A

20 5 B-B

21 6 D-D

15

*/

總結

以上是生活随笔為你收集整理的kmp算法详解php,php中字符串匹配KMP算法实现例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。