jcortes96 / software2

Espacio para subir pruebas de software
0 stars 58 forks source link

Pruebas Sonarqube Juan Alvarez, Nicolas Gonzalez, Daniela Martin #31

Open danniela18 opened 5 years ago

danniela18 commented 5 years ago

import java.util.ArrayList ; import java.util.Comparator ; importar java.util.HashMap ;

público de clase HEncoder {

public  HashMap < Character , String > encoder =  new  HashMap <> (); // para codificar
public  HashMap < String , Character > decoder =  new  HashMap <> (); // para decodificar

 nodo de clase privada estática  { 

    Personaje ch;
    Frecuencia entera
    Nodo a la izquierda;
    Nodo correcto;

     Nodecomparator final estático  público Ctor = new Nodecomparator ();   

    public  static  class  Nodecomparator  implementa  Comparator < Node > {

        @Anular
        public  int  compare ( Nodo  o1 , Nodo  o2 ) {
            devuelve o2 . freq - o1 . freq;
        }

    }
}

 HEncoder público ( alimentador de cadenas  ) {
    // 1. mapa de freq
    HashMap < Character , Integer > freqmap =  new  HashMap <> ();
    for ( int i =  0 ; i < feeder . length (); ++ i) {
        char ch = alimentador . charAt (i);
        if (freqmap . containsKey (ch)) {
            freqmap . put (ch, freqmap . get (ch) +  1 );
        } else {
            freqmap . put (ch, 1 );
        }
    }

    // 2. preparar el montón del conjunto de claves
    genericheap < Node > heap =  new genericheap < Node > ( Node . Ctor );
    ArrayList < Character > k =  new  ArrayList <> (freqmap . KeySet ());
    para ( Carácter c : k) {
        Nodo n =  nuevo  nodo ();
        n . ch = c;
        n . left =  null ;
        n . derecho =  nulo ;
        n . freq = freqmap . obtener (c);
        montón . agregar (n);
    }

    // 3.Preparar árbol, eliminar dos, fusionar, volver a agregarlo
    Nodo fn =  nuevo  nodo ();
    mientras que (montón . size () ! =  1 ) {
        Nodo n1 = montón . removeHP ();
        Nodo n2 = montón . removeHP ();
        fn =  nuevo  nodo ();

        fn . freq = n1 . freq + n2 . freq;
        fn . left = n1;
        fn . derecha = n2;

        montón . agregar (fn);
    }

    // 4. transversal

    poligonal (montón . removeHP (), " " );
}

 recorrido vacío  privado ( Nodo nodo , String osf ) {  

    if (node . left ==  null  && node . right ==  null ) {
        codificador . poner (nodo . ch, OSF);
        decodificador . put (osf, nodo . ch);
        regreso ;
    }
    atravesar (nodo . izquierda, OSF +  " 0 " );
    atravesar (nodo . derecho, OSF +  " 1 " );

}

// trabajo de compresión hecho aquí
public  String  compress ( String  str ) {
    String rv =  " " ;
    for ( int i =  0 ; i < str . length (); ++ i) {
        rv + = codificador . get (str . charAt (i));
    }
    devolver rv;
}

// para descomprimir
 Descompresión de cadena  pública ( String str ) { 
    String s =  " " ;
    Código de cadena =  " " ;
    for ( int i =  0 ; i < str . length (); ++ i) {
        código + = str . charAt (i);
        if (decodificador . containsKey (código)) {
            s + = decodificador . obtener (código);
            code =  " " ;
        }
    }

    devolver s;
}

}