chavdardim1990

Slow OOP approach

Jun 4th, 2024
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. package com.company.dsa;
  2.  
  3. import java.util.*;
  4. import java.util.function.Function;
  5.  
  6. public class JustCount {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9. String input = scanner.nextLine();
  10. Map<Character, Letter> referenceIndexes = new HashMap<>();
  11. TreeSet<Letter> lowercase = new TreeSet<>();
  12. TreeSet<Letter> uppercase = new TreeSet<>();
  13. TreeSet<Letter> symbol = new TreeSet<>();
  14. for (char character : input.toCharArray()) {
  15. if (Character.isLowerCase(character)) {
  16. addCharacter(character, referenceIndexes, lowercase);
  17. } else if (Character.isUpperCase(character)) {
  18. addCharacter(character, referenceIndexes, uppercase);
  19. } else {
  20. addCharacter(character, referenceIndexes, symbol);
  21. }
  22. }
  23. System.out.println(getFirst(symbol));
  24. System.out.println(getFirst(lowercase));
  25. System.out.println(getFirst(uppercase));
  26.  
  27. }
  28.  
  29. private static String getFirst(TreeSet<Letter> letters) {
  30. if (letters.isEmpty()) {
  31. return "-";
  32. }
  33. Letter letter = letters.first();
  34. return (char) letter.character + " " + letter.count;
  35. }
  36.  
  37.  
  38. private static void addCharacter(char character, Map<Character, Letter> referenceIndexes, Set<Letter> letters) {
  39. Letter letter = referenceIndexes.getOrDefault(character, new Letter(character, 0));
  40. letter.count++;
  41. if (referenceIndexes.put(character, letter) != null) {
  42. letters.remove(letter);
  43. letters.add(letter);
  44. }
  45. letters.add(letter);
  46. }
  47.  
  48.  
  49. private static class Letter implements Comparable<Letter> {
  50. int character, count;
  51.  
  52. Letter(int character, int count) {
  53. this.character = character;
  54. this.count = count;
  55. }
  56.  
  57. @Override
  58. public int compareTo(Letter o) {
  59. return Comparator
  60. .comparing((Function<Letter, Integer>) letter -> -letter.count)
  61. .thenComparingInt(l -> l.character)
  62. .compare(this, o);
  63. }
  64. }
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment