Найдите все анаграммы в тексте и напечатайте их в оригинальном виде - PullRequest
0 голосов
/ 23 октября 2019

Моя программа читает весь текстовый файл в строку и ищет в нем анаграммы.

Проблема в том, что это работает, только если я преобразую все в нижний регистр. Я хочу напечатать их в оригинальном виде.

try(LineNumberReader fileInputReader = new LineNumberReader(new FileReader(filePath))){
        StringBuilder inputStringBuilder = new StringBuilder();

        String line = null;

        String lineSeparator = System.getProperty("line.separator");

        while((line = fileInputReader.readLine()) != null){
          inputStringBuilder.append(line);
          inputStringBuilder.append(lineSeparator);
        }

        String input = inputStringBuilder.toString();
        input = input.replaceAll("[^äÄöÖüÜßa-zA-Z ]", "").toLowerCase();
        String[] sentence = input.split(" ");

        Map<String, Set<String>> anagrams = new HashMap<>();

        for(int i = 0; i < sentence.length; i++){

            char[] charwords = sentence[i].toCharArray();

            Arrays.sort(charwords);

            String key =  new String(charwords);

            Set<String> anagramSet = anagrams.get(key);
            if ( anagramSet == null) {
                anagramSet = new HashSet<>();
                anagrams.put(key, anagramSet);
            }

            anagramSet.add(sentence[i]);

        }

        Collection<Set<String>> values = anagrams.values();

        for (Set<String> set : values) {
            if(set.size() > 1){
            System.out.println(set.toString().replace("[", "").replace("]", ""));
            }
        }

      }

Если есть общий лучший способ выполнить эту задачу, не стесняйтесь исправлять меня.

...