使用python从给定的数字字符串最多更改K位,从而生成最大回文?
使用python编程从给定的数字字符串最多更改K位,从而生成最大回文 “大家好……这个程序可以帮助您将数字字符串设置为最大回文,更改次数为‘k’!” !/usr/bin/python使用python从给定的数字字符串最多更改K位,从而生成最大回文?,python,palindrome,Python,Palindrome,使用python编程从给定的数字字符串最多更改K位,从而生成最大回文 “大家好……这个程序可以帮助您将数字字符串设置为最大回文,更改次数为‘k’!” !/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):
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)))
def最大值(a、b):
如果a>b:
归还
其他:
返回b
def回文组(str,k1):
l=0
r=len(str)-1
pl=str
k=int(k1)
而(l=1和(str[l]!=pl[l]或str[r]!=pl[r]):
k-=1
pl[l]=pl[r]='9'
l+=1
r-=1
返回pl
打印“您的输出”+str(“.”join(回文(列表(“45611”),1)))
我使用了列表而不是字符串,这样我们就可以使用索引进行操作,并将列表作为字符串进行连接
“.join(palindrome(list(“45611”),1))我认为您的代码将在pl list和str list中进行更改,因为str到pl的副本很浅。因此,在比较中,这并不好。如果您能证明这是一种情况,那么它将非常有用(并且令人信服)。请提供这方面的代码示例。