目录
一、原题再现
描述
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
测试样例:
"(()())",6
返回:true测试样例:
"()a()()",7
返回:false
测试样例:
"()(()()",7
返回:false
二、问题分析
本题用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。
三、完整代码
import java.util.*; public class Parenthesis { public boolean chkParenthesis(String A, int n) { // write code here Stack <Character> stack = new Stack<>(); for (int i = 0; i < A.length(); i++) { if (A.charAt(i) != '(' && A.charAt(i) != ')') { return false; } } for (int j = 0; j < A.length(); j++) { if (A.charAt(j) == '(') { stack.push(A.charAt(j)); continue; } if (A.charAt(j) == ')') { if (stack.peek() == null) { return false; } else { stack.pop(); } continue; } } return true; } }