leetcode 20 Valid Parentheses

本文介绍了一种使用Python实现的有效括号匹配算法。通过三种不同方法验证括号串是否正确闭合,包括利用栈结构逐个匹配、循环替换匹配对以及简化版的循环替换。这些方法不仅适用于圆括号,也适用于方括号和花括号。

 

20Valid Parentheses    33.90%检查正反括号是否配对完整
python中in的用法:for char in s
replace():str.replace(old, new[, max])

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Jan  8 21:03:48 2018

@author: vicky
"""

#先顺序找到左括号,在反序查找右括号

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        d={'(':')','{':'}','[':']'} #dict{keys:values}
        p=[] #[]为list,可以用pop;“”为string,不能用pop。所以p=[]
        #range(a,b,c),从a到b间隔为c,数组写法是array[a:b:c]
        for char in s:
        #字典的key:value提出方法:d.keys(),d.values()
            if char in d.keys(): #或者 char in '([{':
                p.append(char)
            else:
            #字典pop用法:dict.pop(key)删去一对key和value
            #list pop用法:
            #list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
            #p.pop()=p.pop(-1),移除列表中的最后一个元素,并且返回最后一个元素。运行后的p=原来的p删掉最后一个元素.   
                if p==[] or d[p.pop()]!=char: #判断的同时p的值已经删除了最后一个元素
                    return False
        return p==[]


s="([)]" #false
s="([])" #true
s="]"
Solution().isValid(s)


class Solution(object):
    def isValid(self, s):
        n = len(s)
        while(n != 0 and n%2 == 0): 
#            注意替换函数replace的运用:
#            str.replace(old, new[, max])
#                old -- 将被替换的子字符串。
#                new -- 新字符串,用于替换old子字符串。
#                max -- 可选字符串, 替换不超过 max 次
            s = s.replace("()", "")
            s = s.replace("[]", "")
            s = s.replace("{}", "")
            # breaks while loop if string was not altered during current pass
            if n>len(s):
                n=len(s) 
            else:
                n=0
        return len(s) == 0
    
    
#最简洁,但是运行速度慢
class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        if len(s) == 0:
            return True
        if len(s)%2!= 0:
            return False
        while '()' in s or '{}' in s or '[]' in s:
            s = s.replace('{}','').replace('()','').replace('[]','')
        return len(s)==0

 

 

 

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值