package com.javarush.test.level22.lesson09.task01; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.*; /* Обращенные слова В методе main с консоли считать имя файла, который содержит слова, разделенные пробелами. Найти в тексте все пары слов, которые являются обращением друг друга. Добавить их в result. Порядок слов first/second не влияет на тестирование. Использовать StringBuilder. Пример содержимого файла рот тор торт о о тот тот тот Вывод: рот тор о о тот тот */ public class Solution { public static List<Pair> result = new LinkedList<>(); public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String fileName = reader.readLine(); BufferedReader lineReader = new BufferedReader(new InputStreamReader (new FileInputStream(fileName), StandardCharsets.UTF_8)); String line; List<String> words = new ArrayList<>(); StringBuilder builder = new StringBuilder(); while ((line = lineReader.readLine()) != null) { builder.append(line); builder.append(" "); } line = builder.toString().trim(); //line StringTokenizer st = new StringTokenizer(line, " "); while (st.hasMoreTokens()) words.add(st.nextToken()); //words int x = words.size(); for (int i = 0; i < x; i++) { String thisWord = words.get(i--); StringBuilder sb = new StringBuilder(thisWord); String rev = sb.reverse().toString(); words.remove(thisWord); if (words.contains(rev)) { Pair pair = new Pair(); pair.second = thisWord; pair.first = rev; result.add(pair); words.remove(rev); x--; } x--; } for (Pair pair : result) { System.out.println(pair); } } public static class Pair { String first; String second; @Override public String toString() { return first == null && second == null ? "" : first == null && second != null ? second : second == null && first != null ? first : first.compareTo(second) < 0 ? first + " " + second : second + " " + first; } } }
Leave A Comment