设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
PHP实现求解最长公共子串问题的方法
返回列表
查看:
1450
|
回复:
0
PHP实现求解最长公共子串问题的方法
[复制链接]
wx_pylelnL4
当前离线
积分
7532
2536
主题
2536
帖子
7532
积分
论坛元老
论坛元老, 积分 7532, 距离下一级还需 9992467 积分
论坛元老, 积分 7532, 距离下一级还需 9992467 积分
积分
7532
发消息
电梯直达
楼主
发表于 2018-2-14 05:22:13
|
只看该作者
|
倒序浏览
|
阅读模式
本文实例讲述了PHP实现求解最长公共子串问题的方法。分享给大家供大家参考,具体如下:
题目:
如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。
注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。即,可以不连续,但顺序不能变。
请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出一个最长公共子串。
例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串,
下面的算法是根据网上的java算法由酒逍遥 翻译过来的
已经经过修正
LCS经典算法php版本
= 0; $i--){
for ($j = $substringLength2 - 1; $j >= 0; $j--){
if ($x[$i] == $y[$j])
$opt[$i][$j] = $opt[$i + 1][$j + 1] + 1;
else
$opt[$i][$j] = max($opt[$i + 1][$j], $opt[$i][$j + 1]);
}
}
echo "substring1:".$x."\r\n";
echo "substring2:".$y."\r\n";
echo "LCS:";
$i = 0;
$j = 0;
while ($i = $opt[$i][$j + 1])
$i++;
else
$j++;
}
$endTime = microtime(true);
echo "\r\n";
echo "Totle time is " . ($endTime - $startTime) . " s";
}
public static function GetRandomStrings($length){
$buffer = "abcdefghijklmnopqrstuvwxyz";
$str="";
for($i=0;$i
运行结果:
substring1:cgqtdaacneftabsxvmlb
substring2:suwjwwakzzhghbsmnksg
LCS:absm
Totle time is 0.000648975372314 s
更多关于PHP相关内容感兴趣的读者可查看本站专题:《
PHP数据结构与算法教程
》、《
php程序设计算法总结
》、《
php字符串(string)用法总结
》、《
PHP数组(Array)操作技巧大全
》、《
PHP常用遍历算法与技巧总结
》及《
PHP数学运算技巧总结
》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
PHP中比较两个字符串找出第一个不同字符位置例子
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
php根据指定位置和长度获得子字符串的方法
php实现指定字符串中查找子字符串的方法
PHP中substr_count()函数获取子字符串出现次数的方法
PHP字符串中插入子字符串方法总结
php实现子字符串位置相互对调互换的方法
php获取字符串前几位的实例(substr返回字符串的子串用法)
PHP实现求两个字符串最长公共子串的方法示例
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端