时时商务社区
标题:
PHP实现求解最长公共子串问题的方法
[打印本页]
作者:
wx_pylelnL4
时间:
2018-2-14 05:22
本文实例讲述了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实现求两个字符串最长公共子串的方法示例
欢迎光临 时时商务社区 (http://bbs.4435.cn/)
Powered by Discuz! X3.2