<?phpclass Solution { public function longestCommonPrefix($strs) { if (!$strs) return ''; if (count($strs) == 1) return $strs[0]; $minStr = $strs[0]; $minStrLen = strlen($minStr); foreach ($strs as $k => $str) { $len = strlen($str); if ($len <= $minStrLen) { $minStr = $str; $minStrLen = $len; } } $left = 1; $right = $minStrLen; while ($left <= $right) { $mid = floor(($right - $left) / 2) + $left; if ($this->_isPrefix($strs, substr($minStr, 0, $mid))) { $left = $mid + 1; } else { $right = $mid - 1; } } return substr($minStr, 0, min($left, $right)); } private function _isPrefix($strs, $prefix) { foreach ($strs as $k => $str) { if (substr($str, 0, strlen($prefix)) != $prefix) { return false; } } return true; }}$strs = ['flower', 'flow', 'flight'];// $strs = ['dog', 'cat', 'apple'];$cls = new Solution();$ret = $cls->longestCommonPrefix($strs);print_r($ret);