有效的括号

题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/valid-parentheses/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:利用栈

初始化一个左括号栈leftParentheses,遍历字符串s的每个字符,当遇到左括号时,将当前字符入栈,当遇到右括号时,判断leftParentheses栈顶的字符是否是当前字符对应的左括号,如果不是,返回无效;否则出栈。遍历完成后,判断leftParentheses是否为空,如果不为空,说明左括号没有对应的右括号,返回无效;否则,有效。

import java.util.Stack;

public class Solution {
public static boolean isValid(String s) {
if (s == null || s.length() == 0) {
return true;
}
Stack<Character> leftParentheses = new Stack<>();
for (char parentheses : s.toCharArray()) {
if (parentheses == '(' || parentheses == '{' || parentheses == '[') {
leftParentheses.push(parentheses);
} else if (parentheses == ')') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '(') {
leftParentheses.pop();
} else {
return false;
}
} else if (parentheses == ']') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '[') {
leftParentheses.pop();
} else {
return false;
}
} else if (parentheses == '}') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '{') {
leftParentheses.pop();
} else {
return false;
}
}
}
if (leftParentheses.size() != 0) {
return false;
}
return true;
} public static void main(String[] args) {
System.out.println(isValid("()[]{}"));
}
}

【每日寄语】每个睡醒后的早晨都是一件礼物,把每个开心后的微笑当成一个习惯,美好的一天从现在开始。

最新文章

  1. 转ASP.NET1.1请求队列限制
  2. Atitit.attilax重要案例&#160;项目与解决方案与成果 v6 qa15
  3. windows下的mysql客户端mysqlworkbench链接虚拟机上CentOS的mysql服务器
  4. 一站式学习Wireshark(五):TCP窗口与拥塞处理
  5. 如何安装 JAVA 7 (JDK 7u75) 在 CentOS/RHEL 7/6/5 Fedora
  6. ios游戏开发--cocos2d学习(3)
  7. DSC配置
  8. 使用Dataset
  9. MYSQL常见运算符和函数
  10. openlayers 3方法继承
  11. 车道线识别之 tusimple 数据集介绍
  12. [Swift]LeetCode409. 最长回文串 | Longest Palindrome
  13. JVM--01
  14. 面试简单整理之web
  15. POJ 3481 Double Queue
  16. python之面向对象进阶3
  17. php数组去重(一维数组)
  18. sql查询其他服务器数据库表
  19. MySql 高可用架构Atlas
  20. Spring Cloud Config 配置中心 生产环境下相关问题

热门文章

  1. 学习JAVAWEB第八天
  2. debian老版本下载地址
  3. 「NOI十联测」反函数
  4. LCT 入门
  5. super、this、抽象类、继承
  6. SpringBoot+MyBatis通过ScriptRunner读取SQL文件
  7. 样式操作案例5-改变box的大小和位置
  8. linux 多个C源文件编译
  9. axios取消接口请求
  10. 大话devops