有没有人能帮我看看我的代码哪里有问题的?

img


这个是我的代码


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

运行结果:

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7646840
  • 以下回答来自chatgpt:

    回答:很抱歉,根据提供的参考资料,没有具体的代码内容和问题所在部分,无法提供更准确的解决方案。同时也提醒要注意代码格式的排版,以便更好地阅读和定位错误。如果有具体的问题和代码,欢迎提问,我会尽力提供帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^