Advertisement
Martina312

[НП] - Уникатни имиња

Aug 21st, 2020
659
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.84 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3. import java.util.stream.IntStream;
  4.  
  5. class Names{
  6.     Map<String, Integer> map;
  7.  
  8.     public Names() {
  9.         this.map = new TreeMap<>(String::compareTo);
  10.     }
  11.  
  12.     public void addName(String name){
  13.         map.computeIfAbsent(name, (k) -> map.put(name, 0));
  14.         map.put(name, map.get(name)+1);
  15.     }
  16.  
  17.     public int findUniqueLetters(String name){
  18.         Set<Character> letters = new HashSet<>();
  19.         IntStream.range(0, name.length()).forEach(i -> letters.add(name.toLowerCase().charAt(i)));
  20.         return letters.size();
  21.     }
  22.  
  23.     public void printN(int n){
  24.         map.keySet().stream()
  25.                 .filter(name -> map.get(name) >= n)
  26.                 .forEach(name -> System.out.println(String.format("%s (%d) %d", name, map.get(name), findUniqueLetters(name))));
  27.     }
  28.  
  29.     public String findName(int len, int x){
  30.         ArrayList<String> tmp = (ArrayList<String>) map.keySet().stream().filter(name -> name.length()<len).collect(Collectors.toList());
  31.         if (x >= tmp.size())
  32.             x = x%tmp.size();
  33.         return tmp.get(x);
  34.     }
  35. }
  36. public class NamesTest {
  37.     public static void main(String[] args) {
  38.         Scanner scanner = new Scanner(System.in);
  39.         int n = scanner.nextInt();
  40.         scanner.nextLine();
  41.         Names names = new Names();
  42.         for (int i = 0; i < n; ++i) {
  43.             String name = scanner.nextLine();
  44.             names.addName(name);
  45.         }
  46.         n = scanner.nextInt();
  47.         System.out.printf("===== PRINT NAMES APPEARING AT LEAST %d TIMES =====\n", n);
  48.         names.printN(n);
  49.         System.out.println("===== FIND NAME =====");
  50.         int len = scanner.nextInt();
  51.         int index = scanner.nextInt();
  52.         System.out.println(names.findName(len, index));
  53.         scanner.close();
  54.  
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement