要求

  • 给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效
  • 左括号必须用相同类型的右括号闭合
  • 左括号必须以正确的顺序闭合
  • 空字符串可被认为是有效字符串

思路

  • 遇到左方向括号入栈,遇到右方向括号查看栈顶元素,匹配则出栈
  • 遍历结束后栈为空则满足匹配原则

实现

 1 #include<iostream>
2 #include<stack>
3 #include<cassert>
4
5 using namespace std;
6
7 class Solution{
8 public:
9 bool isValid(string s){
10
11 stack<char> stack;
12 for( int i = 0 ; i < s.size() ; i ++ ){
13 if( s[i] == '(' || s[i] == '{' || s[i] == '[')
14 stack.push( s[i] );
15 else{
16
17 if( stack.size() == 0)
18 return false;
19
20 char c = stack.top();
21 stack.pop();
22
23 char match;
24 if( s[i] == ')')
25 match = '(';
26 else if( s[i] == ']' )
27 match = '[';
28 else{
29 assert( s[i] == '}' );
30 match = '{';
31 }
32
33 if( c != match)
34 return false;
35 }
36 }
37
38 if( stack.size() != 0 )
39 return false;
40
41 return true;
42 }
43 };
44
45 void printBool(bool res){
46 cout << (res ? "True" : "False") << endl;
47 }
48
49 int main(){
50
51 printBool(Solution().isValid("()"));
52 printBool(Solution().isValid("()[]{}"));
53 printBool(Solution().isValid("(]"));
54 printBool(Solution().isValid("([)]"));
55
56 return 0;
57 }

[刷题] 20 Valid Parentheses的更多相关文章

  1. 刷题20. Valid Parentheses

    一.题目说明 这个题目是20. Valid Parentheses,简单来说就是括号匹配.在学数据结构的时候,用栈可以解决.题目难度是Medium. 二.我的解答 栈涉及的内容不多,push.pop. ...

  2. leetCode练题——20. Valid Parentheses

    1.题目 20. Valid Parentheses——Easy  Given a string containing just the characters '(', ')', '{', '}',  ...

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

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

  4. LeetCode解题笔记 - 20. Valid Parentheses

    这星期听别人说在做LeetCode,让他分享一题来看看.试了感觉挺有意思,可以培养自己的思路,还能方便的查看优秀的解决方案.准备自己也开始. 解决方案通常有多种多样,我觉得把自己的解决思路记录下来,阶 ...

  5. [Leetcode][Python]20: Valid Parentheses

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 20: Valid Parentheseshttps://oj.leetcod ...

  6. 20. Valid Parentheses【leetcode】

    20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...

  7. 乘风破浪:LeetCode真题_032_Longest Valid Parentheses

    乘风破浪:LeetCode真题_032_Longest Valid Parentheses 一.前言 这也是非常有意思的一个题目,我们之前已经遇到过两个这种括号的题目了,基本上都要用到堆栈来解决,这次 ...

  8. 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  9. C# 写 LeetCode easy #20 Valid Parentheses

    20.Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...

随机推荐

  1. C# .NET Socket 简单实用框架,socket组件封装

    参考资料 https://www.cnblogs.com/coldairarrow/p/7501645.html 根据.NET Socket 简单实用框架进行了改造,这个代码对socket通信封装还是 ...

  2. ternux的ssh和ftp

    ssh的连接 pkg install ssh ssh -p 8022 username@hostname_ip ftp的创建 安装python 升级pip python -m pip install ...

  3. L'ane Trotro(小驴托托) 67集法语字幕+11集无字幕 百度云

    <小驴托托>(L'ane Trotro)是法国经典的少儿动画片,讲述了小驴托托的生活,它的对白浅显易懂,非常适合法语初学者培养语感以及学习日常表达. 百度云链接自取:https://pan ...

  4. Linux-鸟菜-6-文件与目录管理

    Linux-鸟菜-6-文件与目录管理 这章主要是说一些对目录和文件的增删改查等等命令. .    代表当前目录 ..    代表前一个目录   / 的 . 和 .. 一样 -    代表前一个工作目录 ...

  5. React-状态提升

    通常,多个组件需要反映相同的变化数据,这时建议将共享状态提升到最近的共同父组件中去. <!DOCTYPE html> <html> <head> <meta ...

  6. 初入MongoDB

    初入MongoDB 业务需求,需要用到MongoDB.向来一直是mysql数据库的思想,一下转换为nosql还是很不适应.经过一个月的开发,写一下自己的感触.本文会对应mysql数据库进行说明. 数据 ...

  7. Day003 巧妙验证短路运算

    &&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...

  8. layui中富文本编辑器LayEdit的使用

    html部分: <textarea id="demo" style="display: none;"></textarea>js部分:& ...

  9. Java枚举类、注解和反射

    本文主要介绍的是枚举类,注解和反射.还有一些基础知识:static,基本数据类型,运算符优先级放在文中,以便查阅复习. 其中牵扯到泛型的部分,可参考本人的另一篇博客:(Collection, List ...

  10. CLS的探索:Python如何让日志免费云化

    前言 日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集.日志存储到日志检索,图表分析.监控告警.日志投递等多项服务,协助用户通过日志来解决业务运 ...