当前位置: 代码迷 >> 综合 >> 2:字符串中左右括号是否匹配的压栈出栈算法
  详细解决方案

2:字符串中左右括号是否匹配的压栈出栈算法

热度:30   发布时间:2023-09-29 22:54:14.0
import java.util.LinkedList;
/*** 匹配括号字符串的左右个数是匹配* @author Administrator**/
public class Strkuohao {public static boolean StrKuoHaoMat(String a){LinkedList<String> list=new LinkedList<String>();//采用LinkedList是因为该集合增删速度比较快for(int i=0;i<a.length();i++){if(a.charAt(i)=='('){list.add("(");}else {try {//这里当集合中没有元素时,继续删除会报异常,直接返回falselist.removeLast();} catch (Exception e) {return false;}}}if(list.size()==0){//集合判断是否为空,借助size(),不能用nullreturn true;}else{return false;}}public static void main(String args[]){System.out.println(StrKuoHaoMat("((()))()()(())"));System.out.println(StrKuoHaoMat("((())))()()(())"));System.out.println(StrKuoHaoMat("(()())()"));}
}

 

思想很简单:就是借助LinedList集合的有序有索引来进行压栈和出栈操作,当匹配完,其长度为0,则表示匹配成功

 

下面是python版本,果真你妈方便

 

#__author:Administrator
#date:2019/7/20
"""
匹配字符串括号的左右个数是否成对匹配
"""
def  strkuohaomat(s):a=[]for i in s:if i=="(":a.append("(")else:if a.__len__()==0:return Falseelse:a.pop()if len(a)==0:return Trueelse:return False
if __name__=="__main__":print(strkuohaomat("((()))()()(())"))print(strkuohaomat("((())))()()(())"))print(strkuohaomat("(()())()"))

 

 

  相关解决方案