描述
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
示例
示例1
输入:"["
返回值:false
示例2
输入:"[]"
返回值:true
思路
运用栈的思想,后进先出,遇到左括号就把右括号加入栈中,遇到右括号,就把栈顶元素弹出,看是否相同,相同继续,不相同返回false,如果此时栈为空,那必然是无效的括号。该字符串操作都做完之后,栈为null则有效括号,否则无效括号。
代码
import java.util.Stack;
/*
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
*/
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public static boolean isValid (String s) {
// write code here
boolean flag = false;
char[] chars = s.toCharArray();
Stack <Character> stack = new Stack<>();
for(int i=0;i<chars.length;i++){
if(chars[i]=='('){
stack.push(')');
}
else if(chars[i]=='{'){
stack.push('}');
}
else if(chars[i]=='['){
stack.push(']');
}
else if(stack.isEmpty()||stack.pop()!=chars[i])
return false;
}
return stack.isEmpty();
}
public static void main(String[] args) {
System.out.println(isValid("{}[]("));
}
}