栈
栈---后进先出
在Java里有一个Vector的子类Stack()实现了栈。
Stack()方法
- boolean empty()
判空 - Object peek( )
查看栈顶对象 - Object pop( )
移除栈顶对象 - Object push(Object element)
把项压入堆栈顶部 - int search(Object element)
返回对象在栈中的位置
leetCode No.20 题
链接:https://leetcode-cn.com/problems/valid-parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例:
输入:s = "()"
输出:true
class Solution {
public boolean isValid(String s) {
int n = s.length();
if (n % 2 == 1) {
return false;
}
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if(ch == '(' ||ch =='[' || ch =='{'){
stack.push(ch);
}else if(stack.empty()){
return false;
}else if(ch == ')' && stack.peek() == '('){
stack.pop();
}else if(ch == ']' && stack.peek() == '['){
stack.pop();
}else if (ch == '}' && stack.peek() == '{'){
stack.pop();
}else {
return false;
}
}
return stack.empty();
}
}
更好的方法可能更多,大家加油