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 autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php中文验证码实现方法
Jun 18 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
基于php实现的验证码小程序
Dec 13 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 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集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python图像处理之反色实现方法
2015/05/30 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Delphi软件工程师试题
2013/01/29 面试题
实验室标语
2014/06/21 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
爱心捐款活动总结
2015/05/09 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
分享Python异步爬取知乎热榜
2022/04/12 Python