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模板页面中分页代码的解析
Feb 06 PHP
session在PHP大型web应用中的使用
Jun 25 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
测试php函数的方法
Nov 13 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
PHP sdk文档处理常用代码示例解析
Dec 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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php实现对象克隆的方法
2015/06/20 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python编程实现归并排序
2017/04/14 Python
python读取xlsx的方法
2018/12/25 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python提取log文件内容并画出图表
2019/07/08 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python实现定时发送邮件
2020/12/23 Python
母亲节演讲稿范文
2014/01/02 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL