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 相关文章推荐
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
php smarty函数扩展
Mar 15 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
php blowfish加密解密算法
Jul 02 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
php socket通信简单实现
Nov 18 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python 文件管理实例详解
2015/11/10 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
旷课检讨书大全
2014/01/21 职场文书
中学生个人自我评价
2014/02/06 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
生活部的活动方案
2014/08/19 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
民主生活会汇报材料
2014/12/15 职场文书
服务行业标语口号
2015/12/26 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js