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&amp;MYSQL服务器配置说明
Oct 09 PHP
谈谈PHP语法(2)
Oct 09 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
详解php的socket通信
Aug 11 PHP
php注册登录系统简化版
Dec 28 PHP
PHP文件操作实例总结
Sep 27 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP回调函数与匿名函数实例详解
Aug 16 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 $_SERVER详解
2009/01/16 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
使用PHP获取网络文件的实现代码
2010/01/01 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
页面使用密码保护代码
2013/04/10 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
详解Python中的文本处理
2015/04/11 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
Python页面加载的等待方式总结
2021/02/28 Python
会计专业自荐信
2013/12/02 职场文书
竞职演讲稿范文
2014/01/11 职场文书
企业节能减排实施方案
2014/03/19 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
推普标语口号大全
2015/12/26 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL