Advertisement
Guest User

Untitled

a guest
Apr 24th, 2015
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4.  
  5. public class ExA {
  6.  
  7. public static void main(String[] args) {
  8. String size;
  9. ArrayList<Palavra> listaPalavras = new ArrayList<>();
  10. Scanner sc = new Scanner(System.in);
  11. size = sc.nextLine();
  12. while (!size.equals("")) {
  13. for (int i = 0; i < Integer.parseInt(size); i++) {
  14. String[] aux = separaPalavras(readLn(400));
  15. for (int j = 0; j < aux.length; j++) {
  16. int bol = find(listaPalavras, aux[j]);
  17. if (bol != -1) {
  18. listaPalavras.get(bol).n++;
  19. } else {
  20. Palavra palavraAux = new Palavra(aux[j]);
  21. listaPalavras.add(palavraAux);
  22. }
  23. }
  24. }
  25. size = sc.nextLine();
  26. }
  27. quickSort(listaPalavras, 0, listaPalavras.size() - 1);
  28. for (int i = 0; i < listaPalavras.size(); i++) {
  29. System.out.println(listaPalavras.get(i));
  30. }
  31. }
  32.  
  33. static int find(ArrayList<Palavra> a, String b) {
  34. for (int i = 0; i < a.size(); i++) {
  35. if (b.equalsIgnoreCase(a.get(i).palavra)) {
  36. return i;
  37. }
  38. }
  39. return -1;
  40. }
  41.  
  42. static String[] separaPalavras(String linha) {
  43. String[] aux;
  44. aux = linha.toLowerCase().split("[,\\{\\}\\ \\;\\\\_\\@\\#\\$\\%\\&\\*\\+\\(\\)\\.\\!\\-\\:\\?]");
  45. return aux;
  46. }
  47.  
  48. static String readLn(int maxLg) {
  49. byte lin[] = new byte[maxLg];
  50. int lg = 0, car = -1;
  51. try {
  52. while (lg < maxLg) {
  53. car = System.in.read();
  54. if ((car < 0) || (car == '\n')) {
  55. break;
  56. }
  57. lin[lg++] += car;
  58. }
  59. } catch (IOException e) {
  60. return (null);
  61. }
  62. if ((car < 0) && (lg == 0)) {
  63. return (null);
  64. }
  65. return (new String(lin, 0, lg));
  66. }
  67.  
  68. static void quickSort(ArrayList<Palavra> array, int left, int right) {
  69. int i = left, j = right;
  70. Palavra tmp;
  71. Palavra pivot = array.get((left + right) / 2);
  72. while (i <= j) {
  73.  
  74. while (array.get(i).n > pivot.n || (array.get(i).palavra.compareTo(pivot.palavra) < 0 && array.get(i).n == pivot.n)) {
  75. i++;
  76. }
  77. while (array.get(j).n < pivot.n || (array.get(j).palavra.compareTo(pivot.palavra) > 0 && array.get(j).n == pivot.n)) {
  78. j--;
  79. }
  80.  
  81. if (i <= j) {
  82. tmp = array.get(i);
  83. array.set(i, array.get(j));
  84. array.set(j, tmp);
  85. i++;
  86. j--;
  87. }
  88. }
  89.  
  90. if (left < j) {
  91. quickSort(array, left, j);
  92. }
  93. if (i < right) {
  94. quickSort(array, i, right);
  95. }
  96. }
  97.  
  98. }
  99.  
  100. class Palavra {
  101.  
  102. String palavra;
  103. int n;
  104.  
  105. Palavra(String aux) {
  106. palavra = aux;
  107. n = 1;
  108. }
  109.  
  110. public String toString() {
  111. return palavra + " " + n;
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement