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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
中英文字符串翻转函数
Dec 09 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
Yii2如何批量添加数据
May 17 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
php把文件设置为插件的技巧方法
Feb 03 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
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python读取文件名称生成list的方法
2018/04/27 Python
python3实现名片管理系统
2020/11/29 Python
python 字符串常用方法汇总详解
2019/09/16 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
自荐书4要点
2014/01/25 职场文书
大学社团计划书
2014/05/01 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年采购部工作总结
2014/11/20 职场文书
离婚协议书范文
2015/01/26 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Python find()、rfind()方法及作用
2022/12/24 Python