Java实现有效的括号

题目

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses

思路:

1.先创建一个栈
2.遍历字符串 遇到左括号入栈
3.遇到右括号,取出栈顶元素,判断当前栈顶括号是否与右括号匹配

  • 无序,无效.
  • 有序,继续,直到字符串遍历完成,栈为空,有效.栈为非空,无效.
代码:
import java.util.Stack;

class Solution {
    public static boolean isValid(String s) {
        // 1. 创建一个栈
        Stack<Character> stack = new Stack<>();
        // 2. 循环遍历每个字符
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            // 3. 如果是左括号, 就入栈
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
                continue;
            }
            // 4. 如果是右括号, 取出栈顶元素
            if (stack.isEmpty()) {
                // 不匹配的情况
                return false;
            }
            char top = stack.pop();
            // 5. 检查栈顶元素和当前元素是不是配对的
            if (top == '(' && c == ')') {
                continue;
            }
            if (top == '[' && c == ']') {
                continue;
            }
            if (top == '{' && c == '}') {
                continue;
            }
            // 如果代码走到这, 说明三种合法情况都不满足, 就是非法字符串
            return false;
        }  // end for
        if (stack.isEmpty()) {
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        System.out.println(isValid("(){}"));
    }
}
代码测试用例:

Java实现有效的括号_第1张图片

你可能感兴趣的:(Java实现有效的括号)