通过使用 python 从给定的数字字符串更改最多 K 位来生成最大的回文?

Make largest palindrome by changing at most K-digits from given numerical string using python?

通过使用 python 编程从给定的数字字符串中更改最多 K 位来生成最大的回文。

"Hello, ALL..This program help you to make the numerical string as largest palindrome with 'k'number of changes !"

!/usr/bin/python

def max(a,b):

if a >b :
    return a
else:
    return b


def palindrome(str,k1):

   l=0
   r=len(str)-1
   pl=str
   k=int(k1)
   while (l < r):
     if str[l] != str[r] :
           pl[l]=pl[r]=max(str[l],str[r])
           l+=1
           r-=1

     if k<= 0:
        return "can not able to make palin "

   l=0
   r=len(str)-1

  while l<= r:
     if l == r:
         if k>0:
           pl[l]='9'


    if pl[l] < '9':
        if k>=2 and str[l]==pl[l] and str[r]==pl[r]:
            k-=2
            pl[l]=pl[r]='9'

        elif k>=1 and (str[l]!=pl[l] or str[r]!=pl[r]):
            k-=1
            pl[l]=pl[r]='9'

    l+=1
    r-=1


return pl

print "Your output "+ str("".join(palindrome(list("45611"),1)))

我使用了列表而不是字符串,这样我们就可以使用索引进行操作并加入列表以作为字符串给出

"".join(回文(列表("45611"),1))

我认为你的代码将在 pl 列表和 str 列表中进行更改,因为 str 的浅拷贝到 pl.So 在比较中它不会很好。