Моя программа читает весь текстовый файл в строку и ищет в нем анаграммы.
Проблема в том, что это работает, только если я преобразую все в нижний регистр. Я хочу напечатать их в оригинальном виде.
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("]", ""));
}
}
}
Если есть общий лучший способ выполнить эту задачу, не стесняйтесь исправлять меня.