Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.dsa;
- import java.util.*;
- import java.util.function.Function;
- public class JustCount {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String input = scanner.nextLine();
- Map<Character, Letter> referenceIndexes = new HashMap<>();
- TreeSet<Letter> lowercase = new TreeSet<>();
- TreeSet<Letter> uppercase = new TreeSet<>();
- TreeSet<Letter> symbol = new TreeSet<>();
- for (char character : input.toCharArray()) {
- if (Character.isLowerCase(character)) {
- addCharacter(character, referenceIndexes, lowercase);
- } else if (Character.isUpperCase(character)) {
- addCharacter(character, referenceIndexes, uppercase);
- } else {
- addCharacter(character, referenceIndexes, symbol);
- }
- }
- System.out.println(getFirst(symbol));
- System.out.println(getFirst(lowercase));
- System.out.println(getFirst(uppercase));
- }
- private static String getFirst(TreeSet<Letter> letters) {
- if (letters.isEmpty()) {
- return "-";
- }
- Letter letter = letters.first();
- return (char) letter.character + " " + letter.count;
- }
- private static void addCharacter(char character, Map<Character, Letter> referenceIndexes, Set<Letter> letters) {
- Letter letter = referenceIndexes.getOrDefault(character, new Letter(character, 0));
- letter.count++;
- if (referenceIndexes.put(character, letter) != null) {
- letters.remove(letter);
- letters.add(letter);
- }
- letters.add(letter);
- }
- private static class Letter implements Comparable<Letter> {
- int character, count;
- Letter(int character, int count) {
- this.character = character;
- this.count = count;
- }
- @Override
- public int compareTo(Letter o) {
- return Comparator
- .comparing((Function<Letter, Integer>) letter -> -letter.count)
- .thenComparingInt(l -> l.character)
- .compare(this, o);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment