Текущий код:
Код: Выделить всё
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
Код: Выделить всё
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
Мобильная версия