正如標題所示,我需要獲得2個字符串之間最長的公共子字符串。問題是我還需要打印所有的共同部分,如果有多個。例如:打印2個字符串之間的所有公共部分
$字符串1 = 「asbafbae MATCH1 asjdndrey MATCH2」;
$字符串2 = 「12412342gt MATCH1 hgm1g5m MATCH2」;
最少報名輸出:MATCH1,MATCH2
這是我使用的代碼,我設法獲得最長的公共子,但只有一個。
<?php
function getLongestMatchingSubstring($str1, $str2)
{
$len_1 = strlen($str1);
$longest = '';
for($i = 0; $i < $len_1; $i++){
for($j = $len_1 - $i; $j > 0; $j--){
$sub = substr($str1, $i, $j);
if (strpos($str2, $sub) !== false && strlen($sub) > strlen($longest)){
$longest = $sub;
break;
}
}
}
return $longest;
}
$string1 = 'asbafbaeMATCH1asjdndreyMATCH2';
$string2 = '12412342gtMATCH1hgm1g5mMATCH2';
echo getLongestMatchingSubstring($string1, $string2);
?>
有了,我得到MATCH1作爲輸出。也許我正在編寫的代碼專門用來獲取最長的代碼。希望有人能幫助我
保留一個匹配數組。當你找到一個匹配時,檢查它是否與數組元素長度相同或更長。如果時間更長,請清空陣列並添加新的匹配項。如果長度相同,只需添加新的匹配。 – Barmar