1. Главная
  2. Библиотека
  3. Программирование
  4. В методе main считай с консоли имя файла, который содер...
Решение задачи на тему

В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом. В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая

  • Программирование
  • #Основы алгоритмизации и программирования
  • #Структуры и алгоритмы обработки данных
В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом. В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая

Условие:

В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Считай, что абсолютно все слова из исходного списка могут (и должны!) быть включены в результат (лишних слов нет).
Метод getLine должен возвращать любой правильный вариант при наличии нескольких таковых (см. пример).
Слова разделять пробелом.
Вывести полученную строку на экран.

Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн

Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
или
Вена Амстердам Мельбурн Нью-Йорк Киев
или
Мельбурн Нью-Йорк Киев Вена Амстердам
и т.п.

Требования:
• Метод main должен считывать имя файла с клавиатуры.
• В классе Solution не должно быть статических полей.
• В методе getLine должен быть использован StringBuilder.
• Метод getLine должен возвращать пустую строку (пустой StringBuilder) в случае если ему не были переданы параметры (слова).
• Метод getLine не должен изменять переданные ему параметры (слова).
• Все слова переданные в метод getLine должны быть включены в результирующую строку.
• Вывод на экран должен соответствовать условию задачи.

package com.javarush.task.task22.task2209;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/*
Составить цепочку слов
*/

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;
}
}

Решение:

Для решения задачи, нам нужно реализовать метод getLine, который будет составлять цепочку слов, где последняя буква одного слова совпадает с первой буквой следующего слова. Мы будем использовать StringBuilder для формирования результата.

Вот шаги, которые мы будем выполнять:

  1. Считать имя файла с консоли.
  2. Прочитать содержимое файла и разбить его на слова.
  3. Реализовать метод getLine, который будет принимать массив слов и возвращать строку, составленную по заданным правилам.
  4. Использовать алгоритм поиска, чтобы найти подходящую последовательность слов.
  5. Вывести результат на экран.

...

  1. : Мы используем для считывания имени файла с консоли и затем читаем содержимое файла, разбивая его на слова.

  2. : Этот метод принимает массив слов и инициализирует поиск цепочки слов. Если переданы пустые параметры, он возвращает пустой .

  3. : В методе мы рекурсивно пытаемся построить цепочку слов. Мы используем массив , чтобы отслеживать, какие слова уже были использованы. Если текущее слово может следовать за предыдущим, мы добавляем его в текущую цепочку.

  4. : Метод проверяет, совпадает ли последняя буква текущего слова с первой буквой следующего слова, игнорируя регистр.

  5. : В конце мы выводим результат на экран.

Таким образом, мы можем получить любую правильную цепочку слов, соответствующую условиям задачи.

Выбери предмет