Encontrar subsequencia array

1 resposta
N

oi, estou com uma pequena dificultade na resoluçao de um metodo,a funçao do metodo é procurar uma sub sequencia dentro de um array.

ex: arrayA-> {2,1,4,5,1,2,4,5,1,2,6}
arrayB-> {1,2}

o que estou a tentar fazer é procurar se no array A esta contido o Array B. (ou seja, {1,2} aparece a 1 vez na posiçao 4)

caso n esteja devolvo -1 , caso esteja devolto a primeira posiçao de onde apareçe a primeira vez a subsequencia.

A primeira vista parecia simples, mas estoume baralhando todo com os FOR’s.

Se alguem puder ajudar agradeço :wink:

1 Resposta

J
import java.util.Arrays;

public class SearchArray {

	public static void main(String[] args) {

		 int[] arrayA = new int[] {2,1,4,5,1,2,4,5,1,2};
		 int[] arrayB = new int[] {1,2};
		 
		 System.out.println("posicao: " + search(arrayA, arrayB));
		 
	}
	
	public static int search(int[] a, int[] b) {
		
		int tamA = a.length;
		int tamB = b.length;
		
		if (tamA < tamB) return -1;		
		
		int[] tempArray = new int[tamB];
		for (int i = 0; i < (tamA - tamB + 1); i++) {
			System.arraycopy(a, i, tempArray, 0, tamB);
			if (Arrays.equals(tempArray,b))
				return i;			
		}
		
		return -1;
	}
}

Ele retorna a primeira posição encontrada a partir de 0 (zero) e -1, caso contrário. Qualquer dúvida é só me mandar um e-mail em jdefarge [at] gmail [dot] com.

Criado 3 de janeiro de 2008
Ultima resposta 3 de jan. de 2008
Respostas 1
Participantes 2