<p style="TEXT-INDENT: 2em">【题目背景】本题的题面是:<strong>输出任意两个字符串的最大相同部分。</strong>比如:字符串abcdsss和字符串sdcdsrf的最大相同部分是cds。 </p><p style="TEXT-INDENT: 2em">【题目解法】穷尽法 </p>
<?php
/**
* 找两个字符串相同的部分
**/
function main($str1, $str2) {
//将字符串转成数组
$arr1 = str_split($str1);
$arr2 = str_split($str2);
//计算字符串的长度
$len1 = strlen($str1);
$len2 = strlen($str2);
//初始化相同字符串的长度
$len = 0;
//初始化相同字符串的起始位置
$pos = -1;
for ($i = 0; $i < $len1; $i++) {
for ($j = 0; $j < $len2; $j++) {
//找到首个相同的字符
if ($arr1[$i] == $arr2[$j]) {
//判断后面的字符是否相同
for ($p = 0; (($i + $p) < $len1) &&
(($j + $p) < $len2) &&
($arr1[$i + $p] == $arr2[$j + $p]) &&
($arr1[$i + $p] <> ''); $p++);
if ($p > $len) {
$pos = $i;
$len = $p;
}
}
}
}
if ($pos == -1) {
return ;
} else {
return substr($str1, $pos, $len);
}
}
echo main("abcdsss", "sdcdsrf");
?>