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


Posted in PHP onNovember 17, 2017

本文实例讲述了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和ACCESS写聊天室(九)
Oct 09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
php 分页函数multi() discuz
Jun 21 PHP
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
PHP Array交叉表实现代码
Aug 05 PHP
PHP 遍历文件实现代码
May 04 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 #PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 #PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 #PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 #PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 #PHP
PHP实现链式操作的三种方法详解
Nov 16 #PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 #PHP
You might like
php获取访问者IP地址汇总
2015/04/24 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
import的本质解析
2017/10/30 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
明信片寄语大全
2014/04/08 职场文书
图书室标语
2014/06/21 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
起诉状范本
2015/05/20 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang