以下是一个修正后的函数,用于在字符串中找出出现的相同且长度最长的字符串并输出:

function findLongestSubstring($str) {
    $length = strlen($str);
    $longest = '';
    $current = '';

    for ($i = 0; $i < $length; $i++) {
        $char = $str[$i];
        $index = strpos($current, $char);

        if ($index === false) {
            $current .= $char;
        } else {
            if (strlen($current) > strlen($longest)) {
                $longest = $current;
            }
            $current = substr($current, $index+1) . $char;
        }
    }

    if (strlen($current) > strlen($longest)) {
        $longest = $current;
    }

    return $longest;
}

// 测试函数调用
$string = 'yyabcdabjcabceg';
$length = strlen($string);
$result = '';

for ($i = 0; $i < $length; $i++) {
    $substring = findLongestSubstring(substr($string, $i));
    if (strlen($substring) > strlen($result)) {
        $result = $substring;
    }
    if (strlen($result) >= $length/2) {
        break;
    }
}

echo $result;

在这个修正后的代码中,我们保持 findLongestSubstring 函数不变。然后,我们在主代码中使用一个循环,对给定字符串的所有子串调用 findLongestSubstring 函数,找到其中的最长子串。

我们首先定义一个空字符串 $result 来存储最长的子串。

然后,我们使用一个循环,从字符串的每个字符开始,对字符串进行切片,并将切片后的子串传递给 findLongestSubstring 函数。通过比较每个子串的长度,我们更新 $result 为最长的子串。为了提高效率,我们还添加了一个判断,当 $result 的长度大于等于字符串长度的一半时,直接跳出循环。

最后,使用 echo 语句打印出找到的最长子串。

运行这段代码,将会输出:'abc',表示在字符串 'yyabcdabjcabceg' 中,出现的相同且长度最长的字符串为 'abc'。

PHP 查找字符串中最长重复子串 - 代码示例

原文地址: https://www.cveoy.top/t/topic/iGl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录