一、问题描述
描述
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
数据范围:字符串长度 0\le n \le 100000≤n≤10000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
示例1
输入:
"["
复制返回值:
false
复制
示例2
输入:
"[]"
复制返回值:
true
二、解题思路
1.问题分析
栈
2.解题代码
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character> stack = new Stack<>();
for(char ch: s.toCharArray()){
if(ch == ')' && stack.size()>0 && stack.peek()=='('
|| ch == ']' && stack.size()>0 && stack.peek()=='['
|| ch == '}' && stack.size()>0 && stack.peek()=='{'
){
stack.pop();
}else{
stack.push(ch);
}
}
return stack.size()==0? true:false;
}
}