给定一个仅由小写字母组成的字符串。现在请找出一个位置,删掉那个字母之后,字符串变成回文。请放心总会有一个合法的解。如果给定的字符串已经是一个回文串,那么输出-1。
import sys
n=int(sys.stdin.readline().strip())
slist=[]
for i in range(n):
slist.append(sys.stdin.readline().strip())
if n==0:
print None
def delete(s):
if s==s[::-1]:
return -1
for i in range(len(s)):
if i<len(s)-1:
news=s[:i]+s[i+1:] #将字符串中元素逐个替换掉,进行判断
if news==news[::-1]:
return i
else:
news=s[:i]
return i
res = map(delete,slist)
for m in res:
print res
改进 左右相同可以同时减, 减到不同判断左右哪一个不是就行
import sys
n=int(sys.stdin.readline().strip())
slist=[]
for i in range(n):
slist.append(sys.stdin.readline().strip())
if n==0:
print None
def delete(s):
if s==s[::-1]:
return -1
l=0
r=len(s)-1
while(l<r):
if(s[l]==s[r]):
l += 1
r -= 1
else:
news1=s[l+1:r+1]
news2=s[l:r]
if news1==news1[::-1]:
return l
else:
return r
res=map(delete,slist)
for m in res:
print m