Created
October 7, 2018 17:20
-
-
Save Shtaba09/ce235aee1bf038ed7f920113bd71cc0c to your computer and use it in GitHub Desktop.
Рекурсивное решение
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task22.task2207; | |
import java.io.*; | |
import java.util.LinkedList; | |
import java.util.List; | |
/* | |
Обращенные слова | |
*/ | |
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)); | |
BufferedReader reader1 = new BufferedReader(new FileReader(new File(reader.readLine()))); | |
reader.close(); | |
String line ; | |
StringBuilder stringBuilder = new StringBuilder(); | |
try { while((line = reader1.readLine()) != null) {stringBuilder.append(line+" ");} | |
} finally {reader1.close();} | |
String [] masofstr = stringBuilder.toString().trim().split(" "); | |
for (int i =0;i<masofstr.length;i++){ | |
String lbl = masofstr[i]; | |
masofstr[i]=""; | |
for (int j=0; j<masofstr.length;j++){ | |
StringBuilder stb = new StringBuilder(masofstr[j]); | |
stb.reverse(); | |
if(lbl.equals(stb.toString())&&!lbl.equals("")){ | |
Pair pair = new Pair (lbl,stb.reverse().toString()); | |
masofstr[j]=""; | |
if (!result.contains(pair)){ | |
if (j==i+1){i++;} | |
result.add(pair);} | |
} | |
} | |
} | |
for (Pair pair :result){ | |
System.out.println(pair.toString()); | |
} | |
} | |
public static class Pair { | |
String first; | |
String second; | |
public Pair() { | |
} | |
public Pair(String first, String second) { | |
this.first = first; | |
this.second = second; | |
} | |
@Override | |
public boolean equals(Object o) { | |
if (this == o) return true; | |
if (o == null || getClass() != o.getClass()) return false; | |
Pair pair = (Pair) o; | |
if (first != null ? !first.equals(pair.first) : pair.first != null) return false; | |
return second != null ? second.equals(pair.second) : pair.second == null; | |
} | |
@Override | |
public int hashCode() { | |
int result = first != null ? first.hashCode() : 0; | |
result = 31 * result + (second != null ? second.hashCode() : 0); | |
return result; | |
} | |
@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; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
taskKey="com.javarush.task.task22.task2207" | |
Обращенные слова | |
В методе main с консоли считать имя файла, который содержит слова, разделенные пробелами. | |
Найти в тексте все пары слов, которые являются обращением друг друга. Добавить их в result. | |
Использовать StringBuilder. | |
Кодировка файла - UTF-8. | |
Пример содержимого файла | |
рот тор торт о | |
о тот тот тот | |
Вывод: | |
рот тор | |
о о | |
тот тот | |
Требования: | |
1. Метод main должен считывать имя файла с клавиатуры. | |
2. В методе main должен быть использован StringBuilder. | |
3. В классе Solution должен содержаться вложенный класс Pair. | |
4. В классе Pair должен быть объявлен конструктор без параметров (или конструктор по умолчанию). | |
5. Список result должен быть заполнен корректными парами согласно условию задачи. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment