鱼C论坛

 找回密码
 立即注册
查看: 341|回复: 2

还有什么其他办法没

[复制链接]
发表于 2024-4-23 11:21:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
s = input("请录入测试字符串:")
left =[]
temp = []

for i in s:
    if i == "(" or i == "[" or i == "{":
        left.append(i)
    elif len(left) == 0:
        print("非法")
        break
    elif i == ")" or i == "]" or i == "}":
        temp = left[-1] + i
        if temp == "()" or temp == "[]" or temp == "{}":
                left.pop()
    else:
        print("非法")
        break
else:
    if len(left) == 0:
        print("合法")
    else:
        print("非法")

其中:
elif len(left) == 0:
        print("非法")
        break
这一块,放在   temp = left[-1] + i 之后会报错
放在现在的位置,看着可恶心,还有别的办法嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-23 11:21:35 | 显示全部楼层
根据你提供的代码,我看到你的问题在于当temp等于空时(即左括号与右括号匹配成功),你尝试使用left.pop()来移除已匹配的左括号。但是,left是一个空列表,pop方法无法使用。

为了解决这个问题,你可以使用一个计数器变量来记录左括号的数量。每当遇到左括号时,计数器加1;每当遇到右括号时,计数器减1。这样,当你检查完所有字符后,如果计数器为0,就说明所有左括号都匹配成功,字符串合法。否则,左括号数量大于0或小于0,字符串非法。

下面是修改后的代码:

s = input("请录入测试字符串:")
count = 0

for i in s:
    if i == "(" or i == "{":
        count += 1
    elif i == ")" or i == "}":
        count -= 1
        if count < 0:  # 如果有右括号多余左括号,直接跳出循环
            print("非法")
            break

if count == 0:
    print("合法")
elif count > 0:
    print("非法,左括号缺失")
else:
    print("非法,右括号缺失")

这样修改后的代码只需要遍历一次字符串,不需要使用额外的列表,也不需要使用temp变量。希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-4 11:27:06 | 显示全部楼层
d , e , f = [] , {')' : '(' , ']' : '[' , '}' : '{'} , False
s = input('请输入测试字符串:')
if s :
    for x in s :
        if x in e . keys() or x in e . values() :
            if x in e . values() :
                d . append(x)
            else :
                if d and d[-1] == e[x] :
                    d . pop()
                else :
                    break
    else :
        if not d :
            f = True
    print('合法') if f else print('非法')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表