<?php
/**
* 将首元素作为基础元素,然后从首元素第一个字符开始,判断所有元素第一个字符是否一致,如果第一个字符不一致,直接返回"";再判断其他元素中是否包含首元素前两个字符,如果不包含,则返回首元素第一个字符,如果包含,则继续判断首元素前三个字符是否一致,这样可以找到最大的,其它元素包含首元素的字符串。
* @param $arr
* @return string
*/
function getLongestCommonPrefix($arr)
{
$base = $arr[0];
$base_len = strlen($base);
$len = count($arr);
$ret = "";
for ($i = 1; $i <= $base_len; $i++) {
$sub_str = substr($base, 0, $i);
$is_all_exist = true;
for ($j = 1; $j < $len; $j++) {
if (strpos($arr[$j], $sub_str) !== 0) {
$is_all_exist = false;
break;
}
}
if ($is_all_exist) $ret = $sub_str;
}
return $ret;
}
$arr = ["flower", "flow", "flight"];
$result = getLongestCommonPrefix($arr);
print_r($result);
LeetCode挑战题--最长公共前缀
于 2022-12-10 16:22:59 首次发布