[ Foro de Java ]

Array contenido en otro array

25-Oct-2014 14:01
Invitado (Suso)
3 Respuestas

Buenas tardes, después  de hacer y rehacer el programa[Java] varias veces, llego a un punto en el cual no me llega a compilar como es debido. Creo que el error está a la hora de retornar el resultado booleano, pero no se me ocurre como solucionarlo.
Aprecio cualquier respuesta por mínima que sea, gracias =D

El método match acepta dos parámetros (a1, a2) que son dos arrays monodimensionales de elementos de tipo float. Complételo de forma que sirva para saber si la secuencia de elementos representada por a2 se encuentra contenida en la secuencia de elementos representada por a1. De ser así, devolverá el índice de a1 donde comience la secuencia representada por a2, y si no, devolverá el valor -1.

Ejemplo:
a1 = {1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 5.0, 1.0, 2.0, 3.0}
a2 = {1.0, 2.0, 3.0}
resultado = 2

He aquí a lo que he llegado, espero no ir en mal camino =P


public class Excercise {
    public static boolean matchInPos(int[] a1, int[] a2, int ini) {
        boolean result = true;
        for (int i = ini; i < a1.length; i++){
            for ( int j = 0; j < a2.length; j++){
                if ( a2[j] == a1[i]  ){
                    return result;
                } else {
                    result = false;
                    break;
                }
            }
        }
        return result;
    }
}


Seguiré a ello, si hay alguna novedad lo comentaré por aquí.


28-Oct-2014 00:26
Nacho Cabanes (+84)

Tu planteamiento se acerca, pero no está completo: devuelves un valor en cuanto coinciden 2 datos (por primera vez) y deberás comprobar si coinciden tantos datos como sea la longitud del subarray.


28-Nov-2014 00:05
Invitado (juligan)



for (int i=0; i < a1.length; i++){
   for (int j=0; j < a2.length; j++){
       if(a2[j].equals(a1[i])){
          //System.out.println("coincide 1");
           if (a2[j+1].equals(a1[i+1])){
           //System.out.println("coincide 2");
             if(a2[j+2].equals(a1[i+2])){
             //  System.out.println("coincide 3");
                 System.out.println("la coincidencia se presenta en el indice "+i);
              
             } 
          }
       
       }
   }
   }





28-Nov-2014 11:53
Nacho Cabanes (+84)

Esa solución funciona en este caso puntual, pero tiene dos carencias:

- Puede fallar al llegar al final del array (si no se ha encontrado una coincidencia antes), porque la posición i+1 y la i+2 pueden estar fuera de éste.

- Sólo funciona si el subarray que buscas tiene exactamente longitud 3.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)