当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP实现求两个字符串最长公共子串的方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2018-11-04 12:44:33 浏览: 评论:0 

代码如下:

  1. <?php 
  2. $a = 'abceee12345309878'
  3. $b = 'abceeew2345i09878fsfsfsfabceeewsfsdfsfsabceeew'
  4. $c = array(); 
  5. $lenht1 = strlen($a); 
  6. $lenth2 = strlen($b); 
  7. $startTime = microtime(true); 
  8. for ($i=0;$i<$lenht1;$i++) { 
  9.   for ($j=0;$j<$lenth2;$j++) { 
  10.     $n = ($i-1>=0 && $j-1>=0)?$c[$i-1][$j-1]:0; 
  11.     $n = ($a[$i] == $b[$j]) ? $n+1:0; 
  12.     $c[$i][$j] = $n
  13.   } 
  14. foreach ($c as $key=>$val) { 
  15.   $max = max($val); 
  16.   foreach ($val as $key1 =>$val1) { 
  17.     if ($val1 == $max && $max>0) { 
  18.       $cdStr[$max] = substr($b,$key1-$max+1,$max); 
  19.     } //phpfensi.com 
  20.   } 
  21. ksort($cdStr); 
  22. $endTime = microtime(true); 
  23. echo "Totle time is " . ($endTime - $startTime) . " s"."<br/>"
  24. print_r(end($cdStr)); 
  25. exit
  26. ?> 

运行结果:

  1. Totle time is 0.0012800693512 s 
  2. abceee 

Tags: 字符串最长 公共子串

分享到: