PHP實現求兩個字符串最長公共子串的方法示例
更新時間:2017年11月17日 10:23:33 作者:yujicun
這篇文章主要介紹了PHP實現求兩個字符串最長公共子串的方法,涉及php字符串與數組的遍歷、運算、判斷等相關操作技巧,需要的朋友可以參考下
本文實例講述了PHP實現求兩個字符串最長公共子串的方法。分享給大家供大家參考,具體如下:
前面一篇PHP實現求解最長公共子串問題的方法是基于java改進而來,這里再來看另一種公共子串算法。
代碼如下:
<?php $a = 'abceee12345309878'; $b = 'abceeew2345i09878fsfsfsfabceeewsfsdfsfsabceeew'; $c = array(); $lenht1 = strlen($a); $lenth2 = strlen($b); $startTime = microtime(true); for ($i=0;$i<$lenht1;$i++) { for ($j=0;$j<$lenth2;$j++) { $n = ($i-1>=0 && $j-1>=0)?$c[$i-1][$j-1]:0; $n = ($a[$i] == $b[$j]) ? $n+1:0; $c[$i][$j] = $n; } } foreach ($c as $key=>$val) { $max = max($val); foreach ($val as $key1 =>$val1) { if ($val1 == $max && $max>0) { $cdStr[$max] = substr($b,$key1-$max+1,$max); } } } ksort($cdStr); $endTime = microtime(true); echo "Totle time is " . ($endTime - $startTime) . " s"."<br/>"; print_r(end($cdStr)); exit; ?>
運行結果:
Totle time is 0.0012800693512 s abceee
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:
- php獲取字符串前幾位的實例(substr返回字符串的子串用法)
- PHP字符串中插入子字符串方法總結
- php實現指定字符串中查找子字符串的方法
- php根據指定位置和長度獲得子字符串的方法
- PHP中substr_count()函數獲取子字符串出現次數的方法
- PHP中比較兩個字符串找出第一個不同字符位置例子
- php刪除字符串末尾子字符,刪除開始字符,刪除兩端字符(實現代碼)
- php函數之子字符串替換 str_replace
- php實現子字符串位置相互對調互換的方法
- php使用strpos判斷字符串中數字類型子字符串出錯的解決方法
- php中有關字符串的4個函數substr、strrchr、strstr、ereg介紹和使用例子
- PHP字符串中抽取子串操作實例分析