算法题:有效的括号
一、题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
举例:
([{}])合法,([)]不合法
二、代码
package structure.stack; import java.util.Stack; public class BracketMatch { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); /** * 1、括号分为左括号、右括号。左括号有(、[、{,右括号有)、]、} * 2、循环字符串中所有字符,若为左括号,则入栈,右括号,则跟栈顶元素进行比较是否匹配 */ if(c == '(' || c == '[' || c == '{') { stack.push(c); }else { if(stack.isEmpty()) { return false; } if(c == ')' && stack.pop() != '(') { return false; } if(c == ']' && stack.pop() != '[') { return false; } if(c == '}' && stack.pop() != '{') { return false; } } } // 若字符串的括号两两匹配,最终栈中元素应该为空。 return stack.isEmpty(); } public static void main(String[] args) { BracketMatch bracketMatch = new BracketMatch(); System.out.println(bracketMatch.isValid("([{}])")); System.out.println(bracketMatch.isValid("([)]")); } }
posted on 2021-04-25 14:19 阿里-马云的学习笔记 阅读(158) 评论(0) 编辑 收藏 举报