Я работаю над присваиванием, которое требует от меня использования функции, которая принимает два аргумента: целое число в строковой форме, например, '1921', и целое число k, например, 2. Функция возвращает максимально возможное целое число палиндрома, котороеможно найти, изменив не более k цифр входного числа на любую другую цифру 0-9.
Например, при максимум двух изменениях в 1921 году самое большое возможное число палиндрома - 1991 (с одним изменением 2-> 9).Если бы у нас было три изменения, мы бы получили с 1921 по 9999 максимально возможное целочисленное значение с четырьмя цифрами.
Я считаю, что код, который я использую, проверяет, является ли число палиндромом, но не дает мнемаксимально возможный палиндром, который я могу получить.
Используемый код:
def Is_palindrome(str):
x = 0
for i in range (len(str)/2):
if (str[x]) == (word[len(str)-x-1]):
x+=1
if x == (len(str)/2):
return True
return False
def longest_palindrome(str):
lst = str.split()
palindromes = [] #List that contains the palindromes
long_len = 0 #Length of the longest palindrome
longest = "" #The actual longest palindrome
for i in lst:
if Is_palindrome(i): #If the str is a palindrome
palindromes.append(i) #Add it to the palindrome list
for i in palindromes: #Loop through the palindrome list
if len(i) > long_len: #If the palindrome is longer than the
longest one
longest = i #Set it as the longest one
longest_len = len(i) # Set the length of the longest one to
the length of this one
return longest
Пожалуйста, дайте мне знать, если у вас есть предложения !!Заранее спасибо.