[ Foro de Java ]

ayuda para devolver true o false: subsecuencia de un array

25-Oct-2013 19:26
eduardo fernandez
1 Respuestas

un metodo acepta dos parámetros (a1, a2) que son dos arrays monodimensionales de tipo int y un valor de tipo int mayor o igual que cero (ini).  Completar de forma que sirva para saber si la secuencia de elementos representada por a2 se encuentra contenida en a1, en la posición indicada por ini. De ser así, devolverá true, y si no devolverá false.

Ejemplo:

a1 = {1, 2, 1, 2, 3, 4, 5, 1, 2, 3}

a2 = {1, 2, 3}

ini = 2 >>> resultado = true
ini = 3 >>> resultado = false

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


tengo algo así, se que se puede poner System.out.println() pero cuando me compila me salta error. Si hay otra forma lo agradecería.


29-Oct-2013 17:37
Nacho Cabanes (+32)

Hay algunos fallos:

- En "a2" (contador "j") no debes empezar en la posición "ini", sino en la primera.

- ¿Por qué miras la posición "i+1" del vector "a1", en vez de la posición "i"?

- En este tipo de búsquedas no puedes dar el valor "true" y "false" dentro de la misma condición. No porque un valor sea correcto va a ser correcta toda la cadena. Lo habitual es dar por sentado que sí lo vas a encontrar (presuponer "subsequenceFound=true;", por ejemplo), y cambiar el valor a "false" en cuanto localizas alguna discrepancia.

- Si a la variable no le llamas "result" sino "subsequenceFound" o "isNotSubsequence" o algo así, será más fácil, entender la lógica que pretendes aplicar; si no, puede ser difícil saber cómo lo estás intentando plantear.






(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.)