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 相关文章推荐
屏蔽浏览器缓存另类方法
Oct 09 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
php 分页类 扩展代码
Jun 11 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP 错误处理机制
Jul 06 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php实现文章置顶功能的方法
Oct 20 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
PHP中16个高危函数整理
Sep 19 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
浅谈js闭包理解
2019/03/28 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Php多进程实现代码
2018/05/07 Python
Python中的集合介绍
2019/01/28 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
python多进程并发demo实例解析
2019/12/13 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
python实现逻辑回归的示例
2020/10/09 Python
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
2014年保育员个人工作总结
2014/12/02 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
Golang bufio详细讲解
2022/04/21 Golang