Skip to content

Instantly share code, notes, and snippets.

@Shtaba09
Created October 7, 2018 17:20
Show Gist options
  • Save Shtaba09/ce235aee1bf038ed7f920113bd71cc0c to your computer and use it in GitHub Desktop.
Save Shtaba09/ce235aee1bf038ed7f920113bd71cc0c to your computer and use it in GitHub Desktop.
Рекурсивное решение
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;
}
}
}
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