PHP实现一个函数查找字符串数组中最长的公共前缀字符串

实现逻辑:

  • 获取数组中所有元素公共前缀
  • 用公共前缀匹配每一个元素,查找符合条件的字符串

欢迎猿猿们留言指导
其他语言实现请参考以下链接。
https://leetcode.com/problems/longest-common-prefix/solution/

代码块

function getCommonPreLongStr()
    {
        $array = [ 'leets','leetcode','leetc','aaaaa','le'];
        $pre = '';
        foreach ($array as $v){
            if(empty($pre)){
                $pre = $v;
            }else{
               //将字符串分割成数组,取两个数组的交集
               $res =  implode('',array_intersect(str_split($pre),str_split($v)));
               //不存在公共部分,不做处理
               if(isset($res)){
                   $pre = $res;
               }
            }
        }
        //通过前缀获取最长字符串
        $res = '';
        foreach ($array as $value){
            $match = strstr($value,$pre);
            if(empty($res)){
                $res = $match;
            }else{
                if(strlen($match) > strlen($res)){
                    $res = $match;
                }
            }
        }

        var_dump($res);die;
        return  $res;
    }

你可能感兴趣的:(php)