20. Valid Parentheses - 括号匹配验证
Description:
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
Example:
The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not.
思路分析:
1.这个问题不仅仅是要求 ‘(’字符 与 ‘)’字符 需要成对出现,而且要求“开闭”紧凑,所以来回遍历逐个查找匹配肯定不行;
2.分析问题的特征,最主要的就是合法的输入是很规范的“有开有闭”类型,即能够通过在字符间插入特定数目的竖线,使得整个字符串各个局部都对称,对‘栈’敏感一点的其实能够慢慢联想到这一数据结构,一进一出、两进两出...其实都展示着一种对称;
3.因此,合法的输入一定可以通过‘栈’这一数据结构的pop,push操作完成一个个完整的进出过程。
代码思路:
step1:初始化栈,并入栈输入串的第一个字符;
step2: 从输入串的第二个字符到最后一个字符,依次与栈顶元素对比,栈不为空且栈顶元素与字符匹配则出栈,否则入栈该字符;
Step3: 操作完最后一个字符后,如果栈为空(即有进必有出,各个局部均对称),则输入合法;
C#代码:
public class Solution {
public bool IsValid(string s) {
//step1
Stack<char> stk = new Stack<char>();
char[] sArr = s.ToCharArray();
stk.Push(sArr[]);
for(int i = ;i<s.Length;i++){
//step2
if(stk.Count!=&&IsMatch(stk.Peek(),sArr[i])){
stk.Pop();
}else{
stk.Push(sArr[i]);
}
}
//step3
return stk.Count==;
}
public bool IsMatch(char a,char b){
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}')) return true;
return false;
}
}
20. Valid Parentheses - 括号匹配验证的更多相关文章
- 20. Valid Parentheses(括号匹配,用桟)
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- leetcode 20 Valid Parentheses 括号匹配
Given a string containing just the characters '(', ')', '{', '}', '[' and']', determine if the input ...
- 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、
20. Valid Parentheses 错误解法: "[])"就会报错,没考虑到出现')'.']'.'}'时,stack为空的情况,这种情况也无法匹配 class Soluti ...
- LeetCode解题笔记 - 20. Valid Parentheses
这星期听别人说在做LeetCode,让他分享一题来看看.试了感觉挺有意思,可以培养自己的思路,还能方便的查看优秀的解决方案.准备自己也开始. 解决方案通常有多种多样,我觉得把自己的解决思路记录下来,阶 ...
- 刷题20. Valid Parentheses
一.题目说明 这个题目是20. Valid Parentheses,简单来说就是括号匹配.在学数据结构的时候,用栈可以解决.题目难度是Medium. 二.我的解答 栈涉及的内容不多,push.pop. ...
- [Leetcode][Python]20: Valid Parentheses
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 20: Valid Parentheseshttps://oj.leetcod ...
- leetCode练题——20. Valid Parentheses
1.题目 20. Valid Parentheses——Easy Given a string containing just the characters '(', ')', '{', '}', ...
- 20. Valid Parentheses【leetcode】
20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...
随机推荐
- Windows下搭建HTTP/HTTPS服务器及测试过程
1 安装Apache http://www.apachehaus.com/cgi-bin/download.plx 选择合适的版本下载 本次下载的是 Apache 2.4.x VC14 Apache版 ...
- Swift 2.0 自定义cell和不同风格的cell
昨天我们写了使用系统的cell怎样创建tableView,今天我们再细分一下,就是不同风格的cell,我们怎写代码.先自己创建一个cell,继承于UItableviewcell 我们看看 cell 里 ...
- FTP与TFTP
文件传输协议如今有了很大的广泛,他屏蔽了计算机内部的实现细节,因为可以适用于各种计算机之间文件的传输. 文件咋网络中传输其实是一件很复杂的事情,涉及的问题有很多,比如 (1)计算机存储数据的格式不同 ...
- vs 2015常用快捷键
原文 :http://www.23pro.com/post/4.html 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键"Ctrl + -"; 2 ...
- node-webkit制作桌面应用
心血来潮突然想用js尝试写桌面应用,突然发现我大js真的无所不能.在网上搜到了这么一个东东:node-webkit.用Node.js来进行系统资源的访问,用HTML+CSS完成页面的搭建.哇,一切突然 ...
- R系列:关联分析;某电商平台的数据;做捆绑销售和商品关联推荐
附注:不要问我为什么写这么快,是16年写的. 一.分析目的 I用户在某电商平台买了A,那么平台接下来应该给用户推荐什么,即用户在买了商品A之后接下来买什么的倾向性最大: II应该把哪些商品在一起做捆绑 ...
- HTML5 File接口(在web页面上使用文件)
File接口提供了与文件相关的信息,并且运行JavaScript在web页面上去访问文件中的内容. File对象来自于用户使用input标签选择文件返回的FileList对象,来自于拖放操作的Data ...
- [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.什么是TPYBoard-GPS TPYBoard-GPS又称TPYBoa ...
- nodeJS中读写文件方法的区别
导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三 ...
- SQLDataSet中执行DDL语句
在SQLDataSet中执行我们输入的DDL语句,并观察执行结果. 这里为了省输入的时间,从先输好的记事本中复制的SQL语句.效果图: ******************************** ...