最长公共前缀:
PHP 20ms:
水平扫描法。先判断$strs是否为空或者长度是否为1.接下来取出$strs的第一个元素作为基准元素与剩余其他的元素对比。$curr与后一个对比,累加出最大公共子串,接下来用$str与再后一个对比,如此反复。时间复杂度为O(S),s为$ctrs[0]的长度。
class Solution {
function longestCommonPrefix($strs) {
if(empty($strs)){
return '';
}elseif(count($strs)==1){
return strval($strs[0]);
}else{
$str='';
$curr=$strs[0];
for($i = 1;$i < count($strs);$i++){
for($j = 0;$j < strlen($strs[1]);$j++){
if($curr[$j]==$strs[$i][$j]){
$str .= $strs[$i][$j];
}else{
break;
}
}
$curr = $str;
$str = '';
}
return $curr;
}
}
}
官方解答里有分值递归法,二分法等等。之后会重构本系列文章。