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 相关文章推荐
Look And Say 序列php实现代码
May 22 PHP
组合算法的PHP解答方法
Feb 04 PHP
浅析php header 跳转
Jun 17 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
laravel 数据验证规则详解
Oct 23 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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权限分配的实现代码
2013/04/28 PHP
PHP文件与目录操作示例
2016/12/24 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
《与孩子一起学编程》python自测题
2018/05/27 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
大学生自我鉴定评语
2014/01/27 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
学校清明节活动总结
2014/07/04 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server
ant design vue的form表单取值方法
2022/06/01 Vue.js