-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
112 lines (91 loc) · 3.93 KB
/
Solution.java
File metadata and controls
112 lines (91 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//Now a vessel full of vinegar was set there; so they put a sponge full of the vinegar on hyssop, and held it at his mouth. (John 19:29)
package com.javarush.task.task22.task2207;
import java.util.*;
import java.io.*;
/*
Обращенные слова
*/
public class Solution {
public static List<Pair> result = new LinkedList<>();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
br.close();
StringBuilder temp = new StringBuilder();
String s;
List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
BufferedReader br1 = new BufferedReader(new FileReader(name));
while ((s = br1.readLine()) != null) {
list.add(s);
System.out.println(s);
}
br1.close();
for (int i = 0; i < list.size(); i++)
{
temp.append(list.get(i));
temp.append(" ");
}
System.out.println(temp);
Collections.addAll(list1, temp.toString().split("\\s"));
for (int i = 0; i < list1.size(); i++)
for (int j = i+1; j < list1.size(); j++) {
String x1 = list1.get(i);
String x2 = new StringBuilder(list1.get(j)).reverse().toString();
if (x1.equals(x2)) {
Pair pair = new Pair();
pair.first = x1;
pair.second = new StringBuilder(x2).reverse().toString();
if (!result.contains(pair))
result.add(pair);
}
}
for (Pair x : result)
System.out.println(x);
}
public static class Pair {
String first;
String second;
public Pair() {}
@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;
}
}
}
/*
Обращенные слова
В методе main с консоли считать имя файла, который содержит слова, разделенные пробелами.
Найти в тексте все пары слов, которые являются обращением друг друга. Добавить их в result.
Использовать StringBuilder.
Пример содержимого файла
рот тор торт о
о тот тот тот
Вывод:
рот тор
о о
тот тот
Требования:
1. Метод main должен считывать имя файла с клавиатуры.
2. В методе main должен быть использован StringBuilder
3. Список result должен быть заполнен корректными парами согласно условию задачи.
4. В классе Solution должен содержаться вложенный класс Pair.
5. В классе Pair должен быть объявлен конструктор без параметров (или конструктор по умолчанию).
*/