Skip to content

Instantly share code, notes, and snippets.

@Shtaba09
Created October 10, 2018 18:16
Show Gist options
  • Save Shtaba09/1d57f4bd705cced9caccd847526a75bd to your computer and use it in GitHub Desktop.
Save Shtaba09/1d57f4bd705cced9caccd847526a75bd to your computer and use it in GitHub Desktop.
Разбиритесь сучки :))) Что я сделал сам не знаю! НО ВАЛИДАЦИЮ ПРОШЕЛ
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.TreeSet;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader rfile = new BufferedReader(new FileReader(reader.readLine()));
reader.close();
String line;
StringBuilder stb = new StringBuilder();
try {
while ((line=rfile.readLine())!=null) {
stb.append(line+" ");
}
} finally {
rfile.close();
}
StringBuilder result = getLine(stb.toString().trim().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words==null||words.length==0){return new StringBuilder();}
StringBuilder stb = new StringBuilder();
ArrayList<StringBuilder> listBld = new ArrayList<>();
String[] words2 = words.clone();
TreeSet<String> set = new TreeSet<>();
for (int i=0; i<words.length;i++){
set.add(words[i]);}
for (String wrs :set){
for (int i=0; i<words.length;i++){words2[i]=words[i];}
StringBuilder tmp =new StringBuilder();
String first = wrs;
tmp.append(first+" ");
for (int i =0; i<words.length; i++){
for (int j=0; j<words.length; j++){
String second = words2[j];
if (!first.equals("+")&&!second.equals("+")){
char[] f = first.toLowerCase().toCharArray();
char[] s = second.toLowerCase().toCharArray();
if (f[f.length-1]==s[0]){
tmp.append(second+" ");
for (int r=0;r<words.length;r++){
if(first.equals(words2[r])){
words2[r]="+";
}
}
for (int r=0;r<words.length;r++){
if(second.equals(words2[r])){
words2[r]="+";
}
}
first=second;
}
}
}
}
listBld.add(tmp);
}
stb=listBld.get(0);
for (StringBuilder stbl : listBld){
if (stb.length()<stbl.length()){
stb=stbl;
}
}
return stb;
}
}
taskKey="com.javarush.task.task22.task2209"
Составить цепочку слов
В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставь все слова в таком порядке,
чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Метод getLine должен возвращать любой вариант.
Слова разделять пробелом.
Вывести полученную строку на экран.
Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн
Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
Требования:
1. Метод main должен считывать имя файла с клавиатуры.
2. В классе Solution не должно быть статических полей.
3. В методе getLine должен быть использован StringBuilder.
4. Метод getLine должен возвращать пустую строку(пустой StringBuilder) в случае если ему не были переданы параметры(слова).
5. Метод getLine не должен изменять переданные ему параметры(слова).
6. Все слова переданные в метод getLine должны быть включены в результирующую строку, если это возможно.
7. Вывод на экран должен соответствовать условию задачи.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment