我的思路

很简单, 遇到 ()、[]、{} 这三对符号的左边的就入栈, 遇到右边的就直接将栈顶元素与其对应进行比较, 能组成一对符号就出栈, 否则就返回 false. 因为有 6 种情况就使用 switch 语句 :

import java.util.Stack;
class Solution {public boolean isValid(String s) {Stack<Character> cstack = new Stack<>();char[] sc = s.toCharArray();for(char c : sc) {switch(c) {case '(' :cstack.push(c);break;case '[' :cstack.push(c);break;case '{' :cstack.push(c);break;case ')' :if (!cstack.isEmpty() && cstack.peek().equals('(')) {cstack.pop();} else {return false;}break;case ']' :if (!cstack.isEmpty() && cstack.peek().equals('[')) {cstack.pop();} else {return false;}break;case '}' :if (!cstack.isEmpty() && cstack.peek().equals('{')) {cstack.pop();} else {return false;}break;default :return false;}}return cstack.isEmpty();}
}

大神的思路

代码简洁了很多, 首先是字符串转换直接在 for 语句中进行, 然后遇到符号中左边的字符, 直接将符号对应的右边字符入栈, 这样可以直接比较. 学习了.

class Solution {public boolean isValid(String s) {Stack<Character> stack = new Stack<>();for (char c : s.toCharArray()) {if (c == '(' {stack.push(')');} else if (c == '[') {stack.push(']');} else if (c == '{') {stack.push('}');} else if (stack.isEmpty() || stack.pop() != c) return false;}return stack.isEmpty();}
}

Leetcode 20.Valid Parenthese相关推荐

  1. LeetCode 20. Valid Parenthese

    题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...

  2. LeetCode 20. Valid Parentheses--笔试题--Python解法

    题目地址:Valid Parentheses - LeetCode Given a string containing just the characters '(', ')', '{', '}', ...

  3. LeetCode: 20. Valid Parentheses

    0509第1题(虽然是08做的,但这会已经09了) 题目 Given a string containing just the characters '(', ')', '{', '}', '[' a ...

  4. [LeetCode]--20. Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  5. LeetCode 20 Valid Parentheses (C++)

    问题: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...

  6. [swift] LeetCode 20. Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  7. LeetCode 20. Valid Parentheses(c++)

    利用栈的操作,遇到"(","[","{"即进栈,遇到")","]","}"判断是 ...

  8. LeetCode——Valid Parenthese

    Leetcode--Valid Parenthese #20 Given a string containing just the characters '(', ')', '{', '}', '[' ...

  9. 【To Do! 重点 正则表达式】LeetCode 65. Valid Number

    LeetCode 65. Valid Number 本博客转载自:[1]http://www.cnblogs.com/yuzhangcmu/p/4060348.html [2]https://blog ...

最新文章

  1. CF911G Mass Change Queries (线段树区间 合并)
  2. cocos游戏源码怎么用_亲子游戏怎么玩?游戏方式用对了,才会事半功倍
  3. 7、MySQL设置日志输出方式
  4. 怎样得到select所有option里的值
  5. 从闭包函数的变量自增的角度 - 解析js垃圾回收机制
  6. windows系统c 实现ftp服务器,windows系统c 实现ftp服务器
  7. which oracle linux,(总结)Linux下Oracle11gR2的ORA-00845错误解决方法
  8. bigdecimal 小于等于0_半场0-0比分的比赛,你需要注意这些
  9. linux服务器安装Mysql。看了几个教程,没装上,看这个一下就装上了。
  10. CSS文件的三种引入方式
  11. C语言从入门到精通所需的7本书
  12. selenium--自动化识别图片验证码并输入
  13. 记一次疑难杂症-HTTP请求RST
  14. 基于SSM实现医院预约挂号系统
  15. [爬虫实践blog]之——GET公众号封面图
  16. 双十一要不要提前收货
  17. 想转行做程序员?转行不难,难的是以后不后悔。
  18. android创建以及使用SDcard镜像文件
  19. Chicken for Windows Phone
  20. 一个简易的计算器(整数)函数

热门文章

  1. 从开源组件安全看SCA软件成分分析技术
  2. ASW3410,10GHz/USB3.1高速模拟切换芯片规格分享
  3. android 触摸屏进程,Android 触摸屏TP
  4. A5年终盘点:整理2013站长圈里的N多个盘点 N多个热点
  5. 对冲基金桥水交班:达利欧卸任 将控制权交接给下一代
  6. c语言逆波兰式算法,c语言 逆波兰式输入 计算器程序
  7. hp 战99 G1开启显示设置面板
  8. 0x80092004:Windows Server上的.NET Framework安装错误
  9. 腾讯云备案授权码常见问题及解决方法
  10. 墨者学院 PHP代码分析溯源(第4题) 详解