Подход грубой силы возвращает пустой список при поиске палиндромных подстрок в Python [закрыто]Python

Программы на Python
Ответить
Anonymous
 Подход грубой силы возвращает пустой список при поиске палиндромных подстрок в Python [закрыто]

Сообщение Anonymous »

Я реализую решение методом грубой силы, чтобы найти все палиндромные подстроки в заданной строке. Мой код выполняется без ошибок, но вместо ожидаемых палиндромных подстрок возвращает пустой список.
Текущий код:

Код: Выделить всё

def is_palindrome(s):
return s == s[::-1]

def find_palindromes_bruteforce(input_word):
palindromes = []
n = len(input_word)
for i in range(n):
for j in range(i + 1, n + 1):  # i changed to n + 1
substring = input_word[i:j]
if is_palindrome(substring):
palindromes.append(substring)
return palindromes

s = "babad"
result = find_palindromes_bruteforce(s)
print(result)
Ожидаемый результат:

Код: Выделить всё

['b', 'a', 'b', 'a', 'd', 'aba', 'bab']  # All palindromic substrings
Фактический результат:

Код: Выделить всё

[]  # none just an empty list
Что я отладил Функция is_palindrome() работает правильно при индивидуальном тестировании:

Код: Выделить всё

print(is_palindrome("aba"))  #  True
print(is_palindrome("babad"))  #  False
а также добавлены операторы печати, чтобы увидеть, какие подстроки проверяются:

Код: Выделить всё

for i in range(n):
for j in range(i + 1, n + 1):
substring = input_word[i:j]
print(f"Checking: {substring}, Is palindrome: {is_palindrome(substring)}")
Это показывает, что отдельные символы и допустимые палиндромы, такие как «аба», проверяются, но не добавляются в список.
Так почему же мой метод грубой силы не захватывает палиндромные подстроки, хотя функция проверки палиндромов работает правильно? Есть ли проблема с тем, как я нарезаю строку или перебираю индексы?
(Я понимаю, что это сложность O(n³) и неоптимальная, но я пытаюсь понять, почему базовая логика не работает, прежде чем переходить к более эффективным решениям)

Подробнее здесь: https://stackoverflow.com/questions/797 ... rings-in-p
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»