leeetcode 20. 有效的括号
20. 有效的括号
问题描述
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
问题分析
这个问题比较简单,只需要使用一个栈来存左括号即可,我们遍历每一个元素:
1 如果栈是空的并且遇到右括号,肯定是非法的,剩下情况只能是栈不空或者遇到左括号;
2.1 遇到左括号,则将左括号入栈;
2.2 如遇到右括号则需要比对与栈最顶上的左括号是否匹配,匹配则检查下一个元素,不匹配则非法;
3 最后遍历完每个元素如果栈仍然非空,说明左括号多了,所以非法
代码
class Solution {
public:
bool isValid(string s) {
int n = s.size();
int i;
stack<char> v;
for(i = 0; i < n; i++)
{
if(v.empty() && (s[i] == ')' || s[i] == '}' || s[i] == ']'))
return false;
else{
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
v.push(s[i]);
else{
if(s[i] == ')' && v.top() == '(')
{
v.pop();
continue;
}
else if(s[i] == ']' && v.top() == '[')
{
v.pop();
continue;
}
else if(s[i] == '}' && v.top() == '{')
{
v.pop();
continue;
}
else
return false;
}
}
}
if(!v.empty())
return false;
else
return true;
}
};
leeetcode 20. 有效的括号的更多相关文章
- LeetCode 20. 有效的括号(Valid Parentheses)
20. 有效的括号 20. Valid Parentheses 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须 ...
- Java实现 LeetCode 20 有效的括号
20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...
- Leetcode题库——20.有效的括号
@author: ZZQ @software: PyCharm @file: IsValid.py @time: 2018/9/16 20:20 要求: 给定一个只包括 '(',')','{','}' ...
- [LeetCode] 20. 有效的括号
题目链接:https://leetcode-cn.com/problems/valid-parentheses/ 题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串, ...
- LeetCode 20. 有效的括号( 括号配对 )
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- 【leetcode】20.有效的括号
题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效.有效字符串需满足:左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认为 ...
- Leetcode 20.有效的括号 By Python
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- 力扣(LeetCode) 20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- Leetcode---栈系列刷题(python3实现)----#20有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
随机推荐
- android 使用 perfetto 抓取atrace
最近项目的原因需要抓自定义的一些atrace,发现使用google 自带的systrace python脚本抓出来的log使用chrome已经打不开了. 想着用用比较时髦的perfetto吧,发现无论 ...
- 升级过log4j,却还没搞懂log4j漏洞的本质?
摘要:log4j远程代码漏洞问题被大范围曝光后已经有一段时间了,今天完整讲清JNDI和RMI以及该漏洞的深层原因. 本文分享自华为云社区<升级过log4j,却还没搞懂log4j漏洞的本质?为你完 ...
- 区块链开发学习第七章:第一个Dapp-猜拳游戏
第一个简单的Dapp-猜拳游戏.本智能合约的功能很简单,就是用户与电脑猜拳,用户选择出手后,电脑随机一个选项,然后调用智能合约方法把两个选项值传过去,在智能合约上进行比较,并通过区块链合约事件广播结果 ...
- 洛谷 11 月月赛 I Div.2 A [Kubic] Addition 题解
Content 你有一个长度为 \(n\) 的序列 \(a\).你可以执行 \(n-1\) 次操作,每次操作中你可以选择一个位置 \(i\),并删除 \(a_i\) 和 \(a_{i+1}\),再在原 ...
- java 数据类型:<泛型>在方法中和在构造器中的应用
背景: Java不允许我们把对象放在一个未知的集合中. import java.util.ArrayList; import java.util.List; /** * @ClassName Meth ...
- centos7 ssh 提示/bin/bash No such file or directory 【ldd命令理解】
现象:客户报障ssh无法登陆.提示/bin/bash No such file or directory 排查:进入单用户模式 linux16 行ro替换 rw init=/sysroot/bin/s ...
- C# Dispose模式
需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:不 ...
- summernote富文本的简单使用
官方地址:https://summernote.org/ html代码 <div class="summernote" id="summernote" & ...
- xcode导出手机的崩溃日志
1.第一步将手机连接xcode 点击window 2.选择 Device and Simulators 3.选择View Device Logs 4.导出文件 右键鼠标选择Export Logs 5. ...
- Problem 2233 ~APTX4869
Problem 2233 ~APTX4869 Accept: 55 Submit: 176Time Limit: 1000 mSec Memory Limit : 32768 KB Pro ...