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巧获服务器端信息
Dec 06 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
php minixml详解
2008/07/19 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php实现微信支付之现金红包
2018/05/30 PHP
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Python学习入门之区块链详解
2017/07/25 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
幼儿园实习自我鉴定
2013/12/15 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
心理学培训心得体会
2016/01/22 职场文书