-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
100 lines (81 loc) · 4.04 KB
/
Copy pathSolution.java
File metadata and controls
100 lines (81 loc) · 4.04 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
//Therefore the Jews, because it was the Preparation Day, so that the bodies wouldn't remain on the cross on the Sabbath
//(for that Sabbath was a special one), asked of Pilate that their legs might be broken, and that they might be taken away. (John 19:31)
package com.javarush.task.task22.task2209;
/*
Составить цепочку слов
*/
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
String fileName = null;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)))
{fileName = reader.readLine();}
String content = new String(Files.readAllBytes(Paths.get(fileName)), StandardCharsets.UTF_8);
String[] words = content.split(" ");
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder result = new StringBuilder();
if (words == null || words.length == 0) return result;
if (words.length==1 || words[0].equals("")) return result.append(words[0]);
ArrayList<String> wordsList = new ArrayList<>();
wordsList.addAll(Arrays.asList(words));
while (wordsList.remove("")){
wordsList.remove("");
}
while (isYes(wordsList)) {
Collections.shuffle(wordsList);
}
for (String word: wordsList){
result.append(word).append(" ");
}
result.deleteCharAt(result.length()-1);
return result;
}
public static boolean isYes(ArrayList<String> wordsList) {
for (int i = 0; i < wordsList.size() - 1; i++) {
String firstWord = wordsList.get(i).toLowerCase();
String secondWord = wordsList.get(i + 1).toLowerCase();
if (firstWord.charAt(firstWord.length() - 1) != secondWord.charAt(0)) return true;
}
return false;
}
}
/*
Составить цепочку слов
В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Метод getLine должен возвращать любой вариант.
Слова разделять пробелом.
Вывести полученную строку на экран.
Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн
Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
Требования:
1. Метод main должен считывать имя файла с клавиатуры.
2. В методе getLine должен быть использован StringBuilder
3. Метод getLine должен возвращать пустую строку(пустой StringBuilder) в случае если ему не были переданы параметры(слова).
4. Все слова переданные в метод getLine должны быть включены в результирующую строку, если это возможно.
5. Вывод на экран должен соответствовать условию задачи.
package com.javarush.task.task22.task2209;
*
Составить цепочку слов
*
public class Solution {
public static void main(String[] args) {
//...
StringBuilder result = getLine();
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
return null;
}
}
*/