最长公共前缀

2019-02-03  本文已影响0人  花钱约下
<?php
/**
 * 最长公共前缀
 *
 * User: hihone
 * Date: 2019/2/3
 * Time: 10:24
 * Description:
 * 如果不存在公共前缀,返回空字符串 ""。
 * 所有输入只包含小写字母 a-z 。
 */

/**
 * @param $array
 *
 * @return string
 */
function longestCommonPrefix($array)
{
    if (empty($array) || count($array) == 0) return '';
    $minLen = PHP_INT_MAX;
    #获取最短的数组
    foreach ($array as $arr) $minLen = min($minLen, strlen($arr));

    $i      = 0;
    $prefix = '';
    $s      = '';
    $res    = true;
    while ($i < $minLen) {
        $s .= $array[0][$i];

        foreach ($array as $arr) {
            $ss = substr($arr, 0, $i + 1);
            if ($s != $ss) {
                $res = false;
                break;
            }
        }
        $res && $prefix = $s;
        $i++;
    }

    return $prefix;
}

$arr = ["flower", "flow", "flight"];
echo longestCommonPrefix($arr);#fl
上一篇 下一篇

猜你喜欢

热点阅读