アルゴリズム - 最長共通接頭辞

Q:

文字列の配列の中で最長の共通のプレフィックスの文字列を検索する関数を書きます。

共通の接頭辞がない場合は、空の文字列を返します  ""

例1:

入力:[ "花"、 "流れ"、 "飛行"] 
出力: "FL"

例2:

入力:[「犬」、「レースカー」、「車」] 
出力:「」
説明:入力文字列の間には共通のプレフィックスはありません。

注意:

すべての与えられた入力は小文字です  a-z

JAVASCRIPT

/ * * 
 * @param {ストリング[]} STRS 
 * @return {文字列} 
 * / 
VAR longestCommonPrefix = 関数(STRS){
     場合(!strs.length)リターン '' ;
    もし(strs.length == 1)を返す STRS [0 ]。
    
    VAR minest = 0 ;
    ためVAR i = 0; iはstrs.length < - 1; iは++ ){ 
        minest = Math.min(STRS [I] .LENGTH、STRS [I + 1 ] .LENGTH)。
    } 

    VARのインデックス= 0、最長= 0 一方、(指数< {minest)
         のためにVAR i = 0; iはstrs.length < - 1; iは++ ){ 

            場合(!STRS [I] [インデックス] == STRS [I + 1 ] [インデックス]){ 
                最長 = 指数; 

                I = strs.length - 1つの
                インデックス = minest 
            } { 
                最長 =指数+ 1 
            } 
        } 
        インデックス ++ 
    } 

    戻り STRS [0](0 .slice 最長)。  
}。

低複雑性の追求のために、それほど長い時間のためにこの質問を考えます。もともとかなりイライラするが、スピードに達したTOP11の%を見るために初めて、または約以下幸せ -

ただし、メモリ使用量、またはそれ以上、その最適化のための多くの余地があります。

 

ます。https://www.cnblogs.com/bbcfive/p/11066862.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34326558/article/details/94451566