Estoy tratando de escribir un método que me devuelva un código correspondiente a un producto bancario que debo pasar a un servicio web. Tengo una matriz de tipos genéricos de productos y la entrada será una cadena que será un tipo específico de cualquiera de los tipos genéricos en la matriz. Voy a explicar esto a través de un código que ya tengo:Coincidencia máxima para la Cadena
public static void main(String[] args)
{
String[] names = { "Checking", "Savings", "DEMAT", "DEMAT Savings", "Interest Checking" };
String input = "Employee Checking";
int min = Integer.MAX_VALUE;
String maxMatch = null;
for(String name : names)
{
int i = input.indexOf(name);
if(i > -1 && i < min)
{
min = i;
maxMatch = name;
}
}
if(null != maxMatch)
{
System.out.println("Maximum match for " + input + " found at " + maxMatch);
}
}
El fragmento anterior trata de realizar un partido de máxima para la entrada. Por lo tanto, si tengo "Comprobación de intereses de los empleados" como entrada, obtengo una coincidencia en "Comprobación de intereses" y no solo "Comprobación".
Lo que quiero saber es si hay alguna manera de optimizar este fragmento más o hay algún caso en el que este código fallará?
Si las posibles coincidencias en los nombres de [] fueron clasificadas por la longitud, por ejemplo, La "comprobación de intereses" vino antes de "Verificar", no tendría que hacer la comparación a mín. Las coincidencias más largas se realizarían automáticamente primero. – user949300