Максимальное совпадение для строки

Я пытаюсь написать метод, который вернет мне код, соответствующий банковскому продукту, который мне нужно передать в веб-службу. У меня есть массив подходящих универсальных типов продуктов, и входными данными будет строка, которая будет конкретным типом любого из универсальных типов в массиве. Позвольте мне объяснить это с помощью кода, который у меня уже есть:

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);
   }
}

Приведенный выше фрагмент пытается выполнить максимальное совпадение для ввода. Итак, если я использую «Проверка интереса сотрудников» в качестве входных данных, я получаю совпадение в «Проверка интереса», а не только «Проверка».

Я хочу знать, есть ли способ дальнейшей оптимизации этого фрагмента или есть ли случаи, когда этот код не работает?

5
задан Michael Berry 19 November 2011 в 17:08
поделиться