Ps.: Enchi o código com comentários, pois não sei ate aonde vc vai entender ele ^^
public static int verifySequence(String pn, String coparacao) {
//verifica quem é o menor pn ou comparacao e guarda este valor, pois a sequencia sera no maximo esse numero
int sequenciaMaxima = (pn.length() < coparacao.length()) ? pn.length(): coparacao.length();
int cursor = 1; //cursor começa em 1, pois teremos que fazer length - cursor, e charAt(length) da outOfBand pq o indice vai de 0 ate length-1
boolean needMoreTeste = sequenciaMaxima > 0; //se o maximo da sequencia for 0 não precisa testar
while(needMoreTeste) {
//Verifica se os caracters das posições são igauis
if (pn.charAt(pn.length() - cursor) == coparacao.charAt(coparacao.length()-cursor)) {
cursor++; //prepara o cursor pra checar o proximo indice
needMoreTeste = cursor <= sequenciaMaxima; //se o cursor passou do limite de teste, então para o teste
} else
needMoreTeste = false; //já que os caracters para esta posição não batem, não há necessidade de testes
}
return cursor - 1; //reduz 1 do cursor, pois ele iniciou do 1, ^^
}
pequeno teste
String pn = "[telefone removido]";
System.out.println(verifySequence(pn, "[telefone removido]"));
System.out.println(verifySequence(pn, "1413443566520"));
System.out.println(verifySequence(pn, "112320"));
System.out.println(verifySequence(pn, "[telefone removido]"));
System.out.println(verifySequence(pn, "12520"));
System.out.println(verifySequence(pn, "987"));
respostas
5
3
2
4
5
0