数据结构--栈


栈---后进先出

在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 stack = new Stack();
        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();
    }
}

更好的方法可能更多,大家加油

你可能感兴趣的:(数据结构--栈)