Valid Parentheses 

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

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

思路:题目整体上比較明白,是对括号是否有效做推断,算法上是用栈来实现,单边入栈。配对之后出栈,最后推断栈是否为空。不为空说明最后没有配对完毕。返回false.

详细代码例如以下:

public class Solution {
public boolean isValid(String s) {
Stack<Character> st = new Stack<Character>();
char[] ch = s.toCharArray();
int len = ch.length;
//假设长度为奇数,肯定无效
if((len & 1) != 0){
return false;
} for(int i = 0; i < len; i++){
if(st.isEmpty()){//栈为空,直接入栈
st.push(ch[i]);
}else{//不为空则讨论栈顶元素是否与ch[i]配对。 配对也出栈
if(isMatch(st.peek(),ch[i])){//是否配对
st.pop();//栈顶元素出栈
}else{
st.push(ch[i]);//不配对入栈
}
}
}
return st.isEmpty();
}
//a为栈顶元素,b为字符串最前元素
public static boolean isMatch(char a, char b){
switch(a){
case '(': if(b == ')') return true; else return false;
case '{': if(b == '}') return true; else return false;
case '[': if(b == ']') return true; else return false;
default : return false;
}
}
}

leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法的更多相关文章

  1. [LeetCode]20. Valid Parentheses有效的括号

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

  2. leetcode 20 Valid Parentheses 有效的括号

    描述: 给定一些列括号,判断其有效性,即左括号有对应的有括号,括号种类只为小,中,大括号. 解决: 用栈. bool isValid(string s) { stack<char> st; ...

  3. leetCode 36.Valid Sudoku(有效的数独) 解题思路和方法

    Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...

  4. leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、

    20. Valid Parentheses 错误解法: "[])"就会报错,没考虑到出现')'.']'.'}'时,stack为空的情况,这种情况也无法匹配 class Soluti ...

  5. Java [leetcode 20]Valid Parentheses

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

  6. [LeetCode] 20. Valid Parentheses 验证括号

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

  7. [LeetCode] 20. Valid Parentheses 合法括号

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

  8. [leetcode]20. Valid Parentheses有效括号序列

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

  9. 【LeetCode】20. Valid Parentheses 有效的括号

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...

随机推荐

  1. 关于网站图片格式 png,jpg,

    小图标用 png 采用无损压缩.可存储透明图片. 适合存储icon, logo 等颜色对比明显,又小的图片. 劣势:索引色数量有限,不适合大图片,颜色层次丰富. 大图片用 jpg 采用了压缩算法,会有 ...

  2. C# 获取Enum 描述和值集合

    //获取枚举的值 public static IEnumerable<T> GetEnumValues<T>() where T : struct { T[] values = ...

  3. Java 8 新特性终极指南

    1.前言 毫无疑问,Java 8的发布是自从Java5以来Java世界中最重大的事件,它在编译器.工具类和Java虚拟机等方面为Java语言带来的很多新特性.在本文中我们將一起关注下这些新变化,使用实 ...

  4. Intellij IDEA 2018.3.5版安装详解及破解

    几个参考链接: 软件下载链接:https://www.jetbrains.com/idea/ 破解补丁:链接:https://pan.baidu.com/s/1xUbil5jq_DyTbXJWUUsM ...

  5. Linux通信之同步阻塞模式

    [参考]韦东山 教学笔记 1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作.常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初 ...

  6. css单双行样式

    #random_box li:nth-child(odd) {//双行 background: #fff5c4; } #random_box li:nth-child(even) {//单行 back ...

  7. C# 网页内容获取

    private string GetGeneralContent(string strUrl) { string strMsg = string.Empty; try { WebRequest req ...

  8. spring实现helloWord

    第一步:添加架包 第二步:写一个简单的实列 package com.java.test; /** * @author nidegui * @create 2019-06-22 10:58 */ pub ...

  9. idea中git回滚到指定分支

    1.git - > show history,选中回滚的指定版本,右击copy revision number 粘出版本号 2.git -> reset hard 出险新页面之后,选中ha ...

  10. Linux删除重复内容命令uniq笔记

    针对文本文件,有时候我们需要删除其中重复的行.或者统计重复行的总次数,这时候可以采用Linux系统下的uniq命令实现相应的功能. 语法格式:uniq [-ic] 常用参数说明: -i 忽略大小写 - ...