通过使用 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 在比较中它不会很好。
通过使用 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 在比较中它不会很好。