fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Alimentos {
  6.  
  7. // rosettacode.org/wiki/Levenshtein_distance#Java
  8. public static int distance(String a, String b) {
  9. a = a.toLowerCase();
  10. b = b.toLowerCase();
  11. int [] costs = new int [b.length() + 1];
  12. for (int j = 0; j < costs.length; j++)
  13. costs[j] = j;
  14. for (int i = 1; i <= a.length(); i++) {
  15. costs[0] = i;
  16. int nw = i - 1;
  17. for (int j = 1; j <= b.length(); j++) {
  18. int cj = Math.min(1 + Math.min(costs[j], costs[j - 1]), a.charAt(i - 1) == b.charAt(j - 1) ? nw : nw + 1);
  19. nw = costs[j];
  20. costs[j] = cj;
  21. }
  22. }
  23. return costs[b.length()];
  24. }
  25.  
  26. public static void main(String args[]){
  27. String[] alimentos = new String[4];
  28. alimentos[0] = "Vegetariano";
  29. alimentos[1] = "Peixe";
  30. alimentos[2] = "Frango";
  31. alimentos[3] = "Carne";
  32. String alimento;
  33. String resultado;
  34. int distancia;
  35. int prevDistancia;
  36.  
  37. Scanner in = new Scanner(System.in);
  38. System.out.println("Digite o Alimento (Vegetariano, Peixe, Frango ou Carne): ");
  39. while ( in.hasNext() ) {
  40. alimento = in.nextLine();
  41. prevDistancia = 1000;
  42. resultado = "";
  43. for ( String item : alimentos ) {
  44. distancia = distance( item, alimento );
  45. if ( prevDistancia > distancia ) {
  46. prevDistancia = distancia;
  47. resultado = item;
  48. }
  49. }
  50. System.out.println("Alimento: "+resultado );
  51. }
  52. }
  53. }
Success #stdin #stdout 0.14s 321088KB
stdin
Framgo
Pexe
Vegetais
Carnes
stdout
Digite o Alimento (Vegetariano, Peixe, Frango ou Carne): 
Alimento: Frango
Alimento: Peixe
Alimento: Vegetariano
Alimento: Carne