美文网首页
每周一个小算法-有效的括号

每周一个小算法-有效的括号

作者: 小左伯爵 | 来源:发表于2020-12-03 22:54 被阅读0次
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true

示例 2:
输入: "()[]{}"
输出: true

示例 3:
输入: "(]"
输出: false

示例 4:
输入: "([)]"
输出: false

示例 5:
输入: "{[]}"
输出: true
package cn.itbin.demo03;

import java.util.Stack;

/**
 * @author chenxiaogao
 * @className Kuohao
 * @description TODO
 * @date 2020/12/3
 **/
public class IsValid {
    public static void main(String[] args) {
        String s = "(){}}{";
        boolean valid = isValid1(s);
        System.out.println("valid = " + valid);

    }

    public static boolean isValid(String s) {
        if (s.length() == 0) {
            return true;
        }
        Stack<Character> stack = new Stack<Character>();
        for (char c : s.toCharArray()) {
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else {
//如果栈中没有左括号,直接返回false
                if (stack.empty()) {
                    return false;
                } else {
                    Character pop = stack.pop();
//如果当前为),并且栈中不为(,返回false
                    if (c == ')') {
                        if (pop != '(') {
                            return false;
                        }
                    } else if (c == ']') {
                        if (pop != '[') {
                            return false;
                        }
                    } else if (c == '}') {
                        if (pop != '{') {
                            return false;
                        }
                    }
                }
            }
        }
        return stack.isEmpty();
    }

    public static boolean isValid1(String s) {
        int i = s.length() / 2;
        for (int i1 = 0; i1 < i; i1++) {
            s = s.replace("()", "").replace("[]", "").replace("{}", "");
        }
        return s.length() == 0;
    }
}

相关文章

  • 每周一个小算法-有效的括号

  • 算法杂记(有效的括号)

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:1...

  • 经典算法 — 有效的括号

    经典算法 — 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否...

  • leetcode算法-有效的括号

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

  • 字符串的括号匹配(python)

    括号匹配说明 本方法字符串中只有 () 括号 算法思路 从左到右遍历字符串 如果不是括号,默认是有效字符,遍历下一...

  • 2020-09-20

    数据结构与算法系列(一)栈:如何实现有效括号的判断? 有效括号,我想很多人对LeetCode上的这道题很熟悉吧? ...

  • Java算法--括号是否有效

    最近面试机会好少o(╯□╰)o,记录个笔试时的算法题 给定一个字符串所表示的括号序列,包含以下字符: '(', '...

  • 力扣算法 - 有效的括号

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

  • 回溯算法和深度优先搜索(二)

    先看一道题目: 括号生成。 输入一个整数 ,罗列出所有有效的括号组合。有效的括号组合是指 左括号开始,右括号结束,...

  • 每天一道算法题4

    【括号有效配对】括号有效配对是指:1) 任何一个左括号都能找到和其正确配对的右括号2)任何一个右括号都能找到和其正...

网友评论

      本文标题:每周一个小算法-有效的括号

      本文链接:https://www.haomeiwen.com/subject/tjsqwktx.html