public class BuscarIndice {
public static void main(String[] args) {
String cadena = "abcXcbz";
String subCadena = "bzfasdadadqads";
System.out.println("Palabra: " + cadena);
System.out.println("SubCadena a buscar: " + subCadena);
System.out.println("Posición en cadena: " + indiceEnCadena(cadena, subCadena));
}
private static int indiceEnCadena(String cadena, String subCadena) {
//La subcadena no puede ser MAYOR que la cadena
if (subCadena.length() <= cadena.length()) {
boolean posibleCoincidencia = false;
for (int indice = 0; indice < cadena.length(); indice++) {
//Buscamos el primer caracter de la subcadena dentro de la cadena
if (cadena.charAt(indice) == subCadena.charAt(0)) {
posibleCoincidencia = true;
/*
* Primer caracter encontrado, ahora hay que comparar el resto
* de caracteres de la subcadena con los siguientes caracteres de la cadena.
* Pero antes, comprobamos que aún queda suficiente cadena. Si la subcadena es
* mayor que lo que queda de cadena, es que no se encuentra lo que buscamos
*/
int restoCadena = cadena.length() - indice;
if (restoCadena >= subCadena.length()) {
int indiceCad = indice;
int indiceSub = 0;
//Comprobamos resto de caracteres, mientras se mantenga la posible coincidencia
//o hasta haber comprobado toda la subcadena
while (posibleCoincidencia && indiceSub < subCadena.length()) {
posibleCoincidencia = cadena.charAt(indiceCad) == subCadena.charAt(indiceSub);
indiceCad++;
indiceSub++;
}
//Comprobacion terminada, si posibleCoincidencia sigue siendo TRUE, ya tenemos lo que buscamos
if (posibleCoincidencia)
return indice;
}
}
}
}
return -1; //No se ha encontrado subcadena en la cadena
}
}