当前位置: 代码迷 >> 综合 >> LeetCode 20 Valid Parentheses
  详细解决方案

LeetCode 20 Valid Parentheses

热度:37   发布时间:2023-10-28 04:47:46.0

思路

遍历整个string,遇到前半部分就入栈,遇到后半部分就判断栈顶是否与之匹配,不匹配则直接返回false,匹配则继续遍历。【注意,遇到后半部分时,如果栈为空,则不用匹配,直接返回false】
最后判断栈是否为空,若为空,则说明匹配成功;否则,匹配失败。

代码

class Solution {
    public boolean isValid(String s) {
    Stack<Character> stack = new Stack<>();for(int i = 0; i < s.length(); i++) {
    if(s.charAt(i) == ')') {
    if(stack.isEmpty() || stack.pop() != '(') {
    return false;}} else if(s.charAt(i) == ']') {
    if(stack.isEmpty() || stack.pop() != '[') {
    return false;}} else if(s.charAt(i) == '}') {
    if(stack.isEmpty() || stack.pop() != '{') {
    return false;}} else {
    stack.push(s.charAt(i));}}return stack.isEmpty();}
}

复杂度

时间复杂度O(n), 空间复杂度O(n).

  相关解决方案