Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Да се напише програма која од дадена листа со зборови (секој збор е во нов ред) ќе ги најде групите со пет или повеќе анаграми (анаграм е збор составен од истите букви). Откако ќе ги најде групите треба да се отпечататат на стандарден излез сортирани според азбучен ред и тоа секоја група од анаграми во нов ред, а анаграмите одделени со празно место (внимавајте да нема празно место на крајот од редот). Редоследот на печатење на групите од анаграми е соодветен на редоследот на зборовите кои дошле на влез како први преставници на соодветната група од анаграми.
- */
- import java.io.InputStream;
- import java.util.*;
- import java.util.stream.Collectors;
- public class Anagrams {
- public static void main(String[] args) {
- findAll(System.in);
- }
- public static void findAll(InputStream inputStream) {
- Map<String, TreeSet<String>> words = new TreeMap<>();
- Scanner scanner = new Scanner(inputStream);
- while (scanner.hasNext()) {
- String word = scanner.nextLine();
- String sortedWord = wordSorted(word);
- words.computeIfAbsent(sortedWord, key -> new TreeSet<>());
- words.get(sortedWord).add(word);
- }
- words.values().stream()
- .filter(set -> set.size()>=5)
- .sorted(Comparator.comparing(set -> set.first()))
- .forEach(set -> System.out.println(set.stream().collect(Collectors.joining(" "))));
- }
- public static String wordSorted(String s) {
- char[] letters = s.toCharArray();
- Arrays.sort(letters);
- String sorted = "";
- for (char c : letters)
- sorted += c;
- return sorted;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment