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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
php中的时间显示
Jan 18 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
yii添删改查实例
Nov 16 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 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
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
摘自百度的图片轮换效果代码
2007/11/19 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
VUE+node(express)实现前后端分离
2019/10/13 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python程序中设置HTTP代理
2016/11/06 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Python中函数的返回值示例浅析
2019/08/28 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
pandas参数设置的实用小技巧
2020/08/23 Python
Python实现像awk一样分割字符串
2020/09/15 Python
python 模拟登陆163邮箱
2020/12/15 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
美国五金商店:Ace Hardware
2018/03/27 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
安全生产月宣传标语
2014/10/06 职场文书
高三英语复习计划
2015/01/19 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers