Итак, есть задача и вот её условие:
На вход подается единственная строка, состоящая из слов, разделенных пробелами. Выведите YES, если после перестановки всех слов строки в обратном порядке получается та же строка, и NO в противном случае.
Например, если вбить
so patient a doctor to doctor a patient so
то программа выведет YES
Для решения задачи я составил алгоритм:
вводится строка;
создается новая строка по следующему принципу:
2.1. все слова искомой строки, не считая последней, идут вперед, т.е. ставятся перед первой. Пример: последнее слово имеет номер n, тогда слово n-1 ставится перед n, слово n-2 ставят перед n-1 и т.д.;
2.2. у полученной строки не должно быть пробелов, т.е. все символы стоят в плотную;
у искомой и получившейся строки удаляются все пробелы и затем они сравниваются. Вот собственно и все.
Проблем с реализацией 1-го и 3-го пункта у меня нет, а вот как реализовать 2-й, я пока не понимаю. Прошу помочь.
- Строка разбивается на слова (метод
- Полученный массив переворачивается.
- Создается новая строка и сравнивается с оригинальной либо перевернутый массив сравнивается с оригинальным.
– etki Sep 10 '14 at 08:59.split(), если не ошибаюсь)Поясните, что Вы подразумеваете под "переворачиванием" массива.
– Hashirama Sep 10 '14 at 09:03Т.е. преобразовали в массив, сделали копию массива и сравнили исходный массив и перевернутую копию - если равны, значит все ОК.
Так пойдет?
– BOPOH Sep 10 '14 at 09:054 строка переворачивает массив.
Лучше запустите и посмотрите, что происходит, сами.
– BOPOH Sep 10 '14 at 09:11Вообще-то split и так в результате дает список.
– insolor Sep 10 '14 at 12:48Если не заметили, далее я сравниваю txt_arr и txt_arr_reverse. Чтобы txt_arr_reverse.reverse() так же не менял и txt_arr (а значит сравнение было бы бесполезным) я и использую клонирование списка (т.е. list от списка)
UPD: avp, а кто спорит? У любой задачи есть если не куча, то хотя бы несколько решений, взять хотя бы swap. Даже для вашего варианта есть несколько способов реализации. Я же просто привел один из способов.
– BOPOH Sep 10 '14 at 13:49@insolor, да кто же спорит? Я могу кучу вариаций привести (с различными if`ами только несколько штук), здесь сама идея важна - я ее на конкретном примере и показал.
А вообще - я комментарием выше про это уже писал.
Если же вы про мой ответ вам, то я ваш комментарий понял буквально - "txt_arr уже список, поэтому list(txt_arr) можно заменить на txt_arr". Но ведь в данном случае работа алгоритма сломается, на что я и указал.
– BOPOH Sep 11 '14 at 04:18