プログラミングの問題:最長共通部分のJavaScript機能の2つの文字列を検索

これは、マルチネットワークは、ペンの質問の先端に利益をもたらし、ここではそれはTucao書かれたシステムに持っていたものだが、本当にゴミである、ネットワークオフ牛の習慣でシステムに質問を行い、非常に不快に行う筆記試験を表しています。

ここに私のアプローチを共有します

アイデア:長い短い方誰比較する2つの文字列を渡す、短いトラバーサルストリング、ループのための2つの、一つ一つを減少させる長さを横断するから外側ループの最大長は、短い文字列から最も内側の円を残し文字列の傍受の最大長が開始された場合、チェックは、文字列の中に長い文字列を引き継いそれが一致する文字列を見つけるまで

コード:

関数findLongestCommonStr(S1、S2){
     VAR commonStr = ''、s1.length = L1と、L2 =のs2.length;
     // 参照比較S1、S2の長さの、誰が長い短い
    VAR shortStr =たL1> L2の?S2:S1 ;
     VAR LongStr =たL1> L2の?S1:S2;
     // 文字列の長さが短い
    VAR STRLEN = shortStr.length; 

    // トラバース短い文字列、ダウン降順
    ため(LET J = STRLEN; J> 0 ; J、){
         // 異なる長さIの可能な合計行う右から横断
        するための(I = 0せ; I <= STRLEN - J; I ++ ){
             // ショートを取り出した文字列の部分ストリング 
            commonStr = shortStr.substr(I、J)。
            // 走行中の観察を容易にするため、視覚的なプリントの多くが見えるでしょう 
            にconsole.log( 'commonStr:'、commonStr、 'I:'、I 'J' 、Jを); 

            //は見て長い文字列を入れて直接的なリターンがある場合は、一致するものがない参照
            IF(longStr.indexOf(commonStrが)> = 0)を返すcommonStrを
        } 
    } 
    // ない場合は空の文字列を返し、
    リターンを '' 
} 

はconsole.log(findLongestCommonStr( "qwer--"、 "qtrrwqw-")); // QW 

// 印刷結果以下、機能実行処理は、iがjが撮影した長さであり、先頭から取られる
// commonStr:qwer-- I:J 0 :. 6 
// commonStr:qwer- I:J 0 :. 5 
// commonStrは:I wer--:J. 1 :. 5 
// commonStr:QWER I:J 0 :. 4 
//commonStr:wer- I:1 J:4 
// commonStr:er-- I:2 J:4 
// commonStr:QWE I:0 J:3 
// commonStr:WER iは:1 J:3 
// commonStr:ER - I:2 J:3 
// commonStr:r--のI:3 J:3 
// commonStr:QW I:0 J:2

 

おすすめ

転載: www.cnblogs.com/linxf/p/12636955.html