2014-11-25 3 views
0

Я бы хотел спросить о поиске палиндромов (предложение - построить палиндромную фразу из коллекции слова) из нескольких строк в файле.Найти палиндромы из нескольких строк в файле

В качестве примера структура файла, как показано ниже

Слишком
текст
горячий
текст
к
Текст
гудок

Выход должен быть слишком горячим, чтобы гудеть, но я не знаю, как реализовать его таким образом.

Я создал простую функцию, чтобы найти одиночные палиндромов и будет рад, если вы могли бы мне помочь улучшению его

public static boolean findPalindrome(String s) { 
int low, high; 
low = 0; 
high = s.length() - 1; 
while (low < high) { 
    if (s.charAt(low) != s.charAt(high)) { 
     return false; 
    } 
    low++; 
    high--; 
} 
return true; 

загружает слово из файла, используя nextLine() метод

Спасибо заранее

+0

Я не уверен, что вы просите. У вас есть слова, разбросанные в файле, которые сами по себе не являются палиндромами. Затем у вас есть слова между ними («текст»), которые, если вы хотите прочитать файл как поток, вывод не приведет к палиндрому. Так или иначе, вы хотите «устранить» эти слова и превратить вывод в палиндром? – hfontanez

+0

Что делать, если слова в исходном файле не работают? например, Too, text, hoot, text ... to. Что тогда? Вы просто просите построить палиндромную фразу из коллекции слова. Я не уверен, как это сделать, кроме грубой силы, и это будет очень утомительная задача. – hfontanez

+0

Я думал о каком-то методе грубой силы, но я не нашел подобного решения. – belford

ответ

1

Я могу рассказать вам, как изменить String, чтобы определить, является ли это палиндром. Я не знаю, как эффективно создавать палиндромную фразу, основанную на ваших требованиях. Чтобы изменить строку, передать исходный String к StringBuilder конструктора и использовать его метод reverse чтобы изменить строку:

String str = "word"; 
    StringBuilder buff = new StringBuilder(str); 
    boolean isPalindrome = str.equalsIgnoreCase(buff.reverse().toString()); 

Если исходная строка и обратная строка равна, то слово палиндром. Вам нужно будет выяснить, как построить фразу.

Чтобы «перебор силы», вам нужно было бы взять одно слово и искать все слова в файле, заканчивающееся тем же письмом, что и ваше ключевое слово. Затем вы возьмете второе письмо и исключите слова из списка, в которых нет соответствующей буквы в новой позиции. Затем вам нужно выяснить, как получить больше слов и т. Д. Я не уверен, как действовать дальше. Но в основном вам придется взять слово, а затем выполнить сравнение по-символам с другими словами в файле, пока вы не будете потреблять ВСЕ слова в файле. Если слова в порядке, это может быть не так уж плохо. Но, если слова вышли из строя, вам нужно будет переставить слова и повторить попытку.