Próbuję napisać metodę, która zwróci mi kod odpowiadający produktowi bankowemu, który muszę przekazać do usługi sieciowej. Mam szereg kwalifikujących się typów produktów generycznych, a dane wejściowe będą ciągami, które będą specyficznym typem dowolnego z typów ogólnych w tablicy. Pozwól mi wyjaśnić to za pomocą kodu, który już posiadam:Maksymalna zgodność dla ciągu znaków
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);
}
}
Powyższy fragment próbuje wykonać maksymalne dopasowanie dla danych wejściowych. Tak więc, jeśli jako dane wejściowe mam "Sprawdzanie zainteresowania pracowniczego", dopasowuję się do "Sprawdzania zainteresowania", a nie tylko "Sprawdzania".
Co chcę wiedzieć, czy istnieje sposób na dalszą optymalizację tego fragmentu kodu lub czy są przypadki, w których ten kod się nie powiedzie?
Jeżeli możliwość dopasowania w nazwach [] kazano o długości, na przykład "Sprawdzanie odsetek" było wcześniejsze niż "Sprawdzanie", nie trzeba było porównywać do min. Dłuższe mecze odbyłyby się automatycznie w pierwszej kolejności. – user949300