problema de programación: Encuentra dos cadenas de la función más larga subsecuencia común Javascript

Este es un multi-red beneficia a la punta de una pluma preguntas, esto es lo que tenía que Tucao sistema escrito es realmente basura, hacer tela de juicio el sistema con los hábitos de ganado fuera de la red, representa la prueba escrita hecho muy incómodo.

Aquí para compartir mi enfoque

Ideas: pasan dos cadenas de comparar, que corta que larga, cadenas de traspaso cortas, dos bucles for, la longitud máxima del bucle externo de atravesar la disminución de la longitud de uno en uno, dejaron círculo más interno de la cadena corta si la longitud máxima de la cadena de intercepción comenzó, cheque, tomada a través de una larga cadena dentro de la cadena hasta que encuentra una cadena de caracteres coincidente

código:

función findLongestCommonStr (S1, S2) {
     var commonStr = '', s1.length = Ll, L2 = s2.length;
     // comparar S1, S2 de longitud, que ven que corta larga 
    var shortStr = ll> L2? S2: S1 ;
     var LongStr = Ll> L2 de? S1: S2;
     // corta longitud de la cadena 
    var strLon = shortStr.length; 

    // atraviesan la cadena más corta, que desciende hacia abajo 
    para (el dejar J = strLon; J> 0 ; J, ) {
         // diferentes longitudes total posible de i, atravesando desde la derecha a hacer 
        para (el LET i = 0; i <= strLon - J; i ++ ) {
             // porción de la cadena de caracteres sacados corto cadena 
            commonStr = shortStr.substr (I, J);
            // A fin de facilitar las observaciones durante la marcha, una gran cantidad de impresión visual se verá 
            el console.log ( 'commonStr:', commonStr, 'I:', I, 'J:' , J); 

            // puse observación de cadena larga ver no hay ninguna coincidencia, si hay un retorno directo 
            SI (longStr.indexOf (commonStr)> = 0) volver commonStr 
        } 
    } 
    // en caso contrario, devolverá una cadena vacía 
    de retorno '' 
} 

la console.log (findLongestCommonStr ( "qwer--", "qtrrwqw-")); // QW 

// siguiente resultado impreso, el proceso de ejecución de la función, i se toma desde el principio donde, j es una longitud tomada 
// commonStr: I qwer--: J 0 :. 6 
// commonStr: I qwer-: J 0 :. 5 
// commonStr: wer-- I: 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

 

Supongo que te gusta

Origin www.cnblogs.com/linxf/p/12636955.html
Recomendado
Clasificación