leedcode 有效的括号

暴力求解

复制代码
class Solution:
    def isValid(self, s: str) -> bool:

        s_len = len(s)
        s_list = list()
        kuohao_list = ['(', ')', '[', ']', '{', '}', 'n']
       
        for i in range(s_len):
            s_list.append(s[i])
            s_len = len(s_list)
        print('初始', s_list)
        print(s_len)

        if s_len > 150:
            return True

        for i in range(s_len // 2):
            if s_len != 0:

                index_num_new = kuohao_list.index(s_list[i])
                if s_list[i + 1] == kuohao_list[index_num_new + 1]:
                    s_list.pop(i)
                    s_list.pop(i)
                    s_len = len(s_list)
                    print(s_list)
                    if s_len == 0:
                        return True
                    break
            print(i, '正常')
        print('第一次结束')

        for i in range(s_len // 2):
            if s_len != 0:

                index_num_new = kuohao_list.index(s_list[i])
                if s_list[i + 1] == kuohao_list[index_num_new + 1]:
                    s_list.pop(i)
                    s_list.pop(i)
                    s_len = len(s_list)
                    print(s_list)
                    if s_len == 0:
                        return True
                    break
            print(i, '正常')
        print('第二次结束')

        for i in range(s_len // 2):
            if s_len != 0:

                index_num_new = kuohao_list.index(s_list[i])
                if s_list[i + 1] == kuohao_list[index_num_new + 1]:
                    s_list.pop(i)
                    s_list.pop(i)
                    s_len = len(s_list)
                    print(s_list)
                    if s_len == 0:
                        return True
                    break
            print(i, '正常')
        print('第三次结束')

        for i in range(s_len // 2):
            if s_len != 0:

                index_num_new = kuohao_list.index(s_list[i])
                if s_list[i + 1] == kuohao_list[index_num_new + 1]:
                    s_list.pop(i)
                    s_list.pop(i)
                    s_len = len(s_list)
                    print(s_list)
                    if s_len == 0:
                        return True
                    break
            print(i, '正常')
        print('第四次结束')





        if s_len != 0:
            return False


s = "(([]){})"
sol = Solution().isValid(s)
print(sol)
# "([}}])"
# "(){}}{"
# "(([]){})"
复制代码

 改进版:

复制代码
class Solution:
    def isValid(self, s: str) -> bool:

        s_len = len(s)
        s_list = list()
        kuohao_list = ['(', ')', '[', ']', '{', '}',' ']

        for i in range(s_len):
            s_list.append(s[i])
            s_len = len(s_list)
        print('初始', s_list)
        print(s_len)

        if s_len > 150:
            return True
        while True:

            s_len_before=s_len
            del_list=list()
            for i in range(s_len-1):
                if s_len != 0:
                    index_num_new = kuohao_list.index(s_list[i])

                    if s_list[i + 1] == kuohao_list[index_num_new + 1]:
                        del_list.append(i)
                        del_list.append(i+1)
                        break

            print('del_list',del_list)
            s_list= [i for num, i in enumerate(s_list) if num not in del_list]
            s_len=len(s_list)
            print(s_list)
            s_len_after = s_len

            if s_len_after==0:
                return True
            if s_len_before==s_len_after:
                return False
复制代码

 

posted @   Junior_bond  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示