kristina7

НП - Лаб 6-2 Група Анаграми

Jan 3rd, 2019
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.96 KB | None | 0 0
  1. /*
  2. Да се напише програма која од дадена листа со зборови (секој збор е во нов ред) ќе ги најде групите со пет или повеќе анаграми (анаграм е збор составен од истите букви). Откако ќе ги најде групите треба да се отпечататат на стандарден излез сортирани според азбучен ред и тоа секоја група од анаграми во нов ред, а анаграмите одделени со празно место (внимавајте да нема празно место на крајот од редот). Редоследот на печатење на групите од анаграми е соодветен на редоследот на зборовите кои дошле на влез како први преставници на соодветната група од анаграми.
  3. */
  4. import java.io.InputStream;
  5. import java.util.*;
  6. import java.util.stream.Collectors;
  7.  
  8. public class Anagrams {
  9.  
  10.     public static void main(String[] args) {
  11.         findAll(System.in);
  12.     }
  13.  
  14.     public static void findAll(InputStream inputStream) {
  15.         Map<String, TreeSet<String>> words = new TreeMap<>();
  16.         Scanner scanner = new Scanner(inputStream);
  17.        
  18.         while (scanner.hasNext()) {
  19.             String word = scanner.nextLine();
  20.             String sortedWord = wordSorted(word);
  21.             words.computeIfAbsent(sortedWord, key -> new TreeSet<>());
  22.             words.get(sortedWord).add(word);
  23.         }
  24.         words.values().stream()
  25.         .filter(set -> set.size()>=5)
  26.         .sorted(Comparator.comparing(set -> set.first()))
  27.         .forEach(set -> System.out.println(set.stream().collect(Collectors.joining(" "))));
  28.     }
  29.     public static String wordSorted(String s) {
  30.         char[] letters = s.toCharArray();
  31.         Arrays.sort(letters);
  32.         String sorted = "";
  33.         for (char c : letters)
  34.             sorted += c;
  35.         return sorted;
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment