思路
正确的括号大概有两种形式: 1,()() 括号分开的 2,(【】)括号包含的 第一种每对括号都是相邻的,从左往右比较就行 第二种从中间往外依次比较就行
解题方法
用栈很适合这题,遇到配队的就出栈,最后栈为空就代表括号有效
复杂度
时间复杂度:
添加时间复杂度, 示例: O(n)O(n)O(n)
空间复杂度:
添加空间复杂度, 示例: O(n)O(n)O(n) 大概吧
class Solution {
public boolean isValid(String s) {
int len = s.length();
char temp;
Deque<Character> stk = new LinkedList<Character>();
//长度非偶数必定错误
if(len%2!=0)
return false;
//主代码
for(int i=0;i<len;i++){
//队列长度大于0就可以开始比较了
if(stk.size()>=1){
temp=stk.pop();
//判断是否配对,不配对则全部入栈
if((temp=='('&&s.charAt(i)==')')||(temp=='['&&s.charAt(i)==']')||(temp=='{'&&s.charAt(i)=='}'))
continue;
else {
stk.push(temp);
stk.push(s.charAt(i));
}
}
else {
stk.push(s.charAt(i));
}
}
//判断栈是否为空
if(stk.isEmpty())
return true;
return false;
}
}