蟒蛇中词典最小的回文



我发现这个问题很有趣,我想在这里分享一下,并找到相当好的代码,特定于py:

给定一个字符串 S,其中包含来自英文字母['a' - 'z']'." 的字符作为特殊字符(不带引号(。编写一个程序,通过用小写字母填充每个褪色字符 ('.'(来构造字典顺序最小的回文结构。

定义:

最小的字典顺序是字符串 s 小于 t 的顺序关系,假设 s (s1( 的第一个字符小于 t (t1( 的第一个字符,或者如果它们 等效,第二个字符等。

例如:">aaabbb"比"aaac"小,因为虽然前三个字符 相等,第四个字符 B 小于第四个字符 C。

输入格式:

字符串 S

输出格式:

在填充每个"."字符后按字典顺序打印最小的回文结构,如果 可以建造一个。否则打印 -1。

示例-1

输入: a.ba

输出: 阿爸

示例-2:

输入: A.B

输出: -1

解释:

示例 1中,您可以通过用"b"填充"."字符来创建回文。

示例 2中,不可能使字符串 s 成为回文。

您不能只是从 NPTEL 作业中复制粘贴问题并在这里提出问题,甚至不尝试! 无论如何,由于"代码"是您唯一关心的问题,请尝试复制粘贴以下行:

word = input()
length = len(word)
def SmallestPalindrome(word, length):
i = 0
j = length - 1
word = list(word)  #creating a list from the input word
while (i <= j):  
if (word[i] == word[j] == '.'): 
word[i] = word[j] = 'a'  
elif word[i] != word[j]:  
if (word[i] == '.'):
word[i] = word[j]
elif (word[j] == '.'):
word[j] = word[i]
else:  # worst case situation when palindrome condition is not met
return -1
i = i + 1  
j = j - 1 
return "".join(word)  # to turn the list back to a string
print(SmallestPalindrome(word, length)) #Print the output of your function
s=input()
s=list(s)
n=len(s)
j=n
c=0
for i in range(n):
j=j-1
if((s[i]==s[j]) and (i==j) and (s[i]=='.' and s[j]=='.')):
s[i]='a'
s[j]='a'
elif(s[i]==s[j]):
continue
elif((s[i]!=s[j]) and (i!=j) and (s[i]=='.' or s[j]=='.')):
if(s[i]!='.'):
s[j]=s[i]
else:
s[i]=s[j]
elif((i==j) and (s[i]=='.')):
s[i]=a

else:
c=c+1
break
if(c<1):
for k in s:
print(k,end="")
else:print("-1")

相关内容

  • 没有找到相关文章

最新更新