def duichen(str1):
a=len(str1)
str2 = []
for k in range(len(str1)):
str2.append(str1[k])
print(str2)
sq1=SqStack();sq2=SqStack();sq3=SqStack();ls=[]
for i in range(a//2):
sq1.push(str1.pop())
if str1.pop()!="@":
return 2
else:
for i in range(a):
sq2.push(str2.pop())
while not sq2.empty():
ls.append(sq2.pop())
for j in range(a):
sq3.push(ls[j])
print(sq2,sq3)
if sq2 == sq3:
return 1
else:
return 0
你的代码的算法有一些问题,比如@的判断,还有就是while not sq2都已经pop全部出栈了,sq2必然都是空的,又去和sq3比较。而且对象之间直接比较永远不会相等的。很多错误。给你重新写的:
def duichen(str1):
if '@' not in str1:#不包含@
return 2
a = len(str1)
if a%2 !=0: #长度必然是奇数,否则不符合
sq1 = SqStack()
for i in range(a):
if i< a // 2:
sq1.push(str1[i])
elif str1[i]!='@':
str = sq1.pop()
if str!=str1[i]:
return 0
return 1
else:
return 0
运行结果:
回答:很抱歉,根据提供的参考资料,没有具体的代码内容和问题所在部分,无法提供更准确的解决方案。同时也提醒要注意代码格式的排版,以便更好地阅读和定位错误。如果有具体的问题和代码,欢迎提问,我会尽力提供帮助。