LeetCode20_Valid Parentheses有效的括号(栈相关问题)
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
使用栈这个数据结构;
Java实现:
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i<s.length(); i++){
char c = s.charAt(i);
if(c == '('||c == '['|| c == '{')
stack.push(c);
else{
if(stack.isEmpty())
return false;
char topChar = stack.pop();
if(c==')'&& topChar != '(')
return false;
if(c==']'&& topChar != '[')
return false;
if(c=='}'&& topChar != '{')
return false;
}
}
return stack.isEmpty();
}
}
C++实现:
class Solution {
public:
bool isValid(string s) {
stack<char> sk;
for(int i = ; i<s.size();i++)
{
//一旦遇到左括号,就压栈
if(s[i]=='[' || s[i]=='(' || s[i]=='{')
sk.push(s[i]);
else
{
//对于只包括各种括号的字符串,如果在此处栈为空
//则必然出现) ] }先于 ( [ {出现的情况,则为false
if(sk.empty())
return false;
// 进行括号匹配,一旦和栈顶不匹配,就返回false
if(s[i]==')' && sk.top()!='(')
return false;
if(s[i]==']' && sk.top()!='[')
return false;
if(s[i]=='}' && sk.top()!='{')
return false;
// 栈顶匹配,出栈
sk.pop();
}
}
//保证栈为空,同时涵盖空字符串的情况
return sk.empty();
}
};
LeetCode20_Valid Parentheses有效的括号(栈相关问题)的更多相关文章
- Parentheses Balance (括号平衡)---栈
题目链接:https://vjudge.net/contest/171027#problem/E Yes的输出条件: 1. 空字符串 2.形如()[]; 3.形如([])或者[()] 分析: 1.设置 ...
- K:栈相关的算法
本博文总结了常见的应用栈来进行实现的相关算法 ps:点击相关问题的标题,即可进入相关的博文进行查看其算法的思想及其实现,这篇博文更多的是作为目录使用 大数加法:在java中,整数是有最大上限的.所谓大 ...
- leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', de ...
- 数据结构(C语言版)顺序栈相关算法的代码实现
这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...
- leetcode 20 Valid Parentheses 有效的括号
描述: 给定一些列括号,判断其有效性,即左括号有对应的有括号,括号种类只为小,中,大括号. 解决: 用栈. bool isValid(string s) { stack<char> st; ...
- [LeetCode]20. Valid Parentheses有效的括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- 【LeetCode】Valid Parentheses(有效的括号)
这道题是LeetCode里的第20道题. 题目要求: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭 ...
- [LeetCode] 20. 有效的括号 (栈)
思路: 首先用字典将三对括号存储,遍历字符串中每个字符,遇到左括号就入栈:遇到右括号就开始判断:是否与栈弹出的顶字符相同. 如果到最后栈被清空,说明全部匹配上了,为真. class Solution( ...
- java虚拟机栈 相关操作
针对JVM虚拟栈 和栈帧的操作 虚拟机栈: 栈元素是栈帧.方法调用,栈帧入栈,反之出栈. 栈帧:一个方法的运行空间. 1.局部变量表:方法定义的局部变量.方法的参数存在该表. 实例方法中有个隐含参数“ ...
随机推荐
- Effective C++: 03资源管理
所谓资源,就是一旦用了它,将来必须还给系统.C++中的资源有:内存.文件描述符.互斥锁.数据库连接.网络socket等. 13:以对象管理资源 1:像下面这个函数: void f() { Invest ...
- js 获取js自身参数
页面中有<script id="comjs" src="js/common.js?cname=mad&cid=500&uid=smpx"& ...
- Oracle错误——引发ORA-01843:无效的月份。
问题 引发ORA-01843:无效的月份. 解决 改动client会话日期的语言: ALTER SESSION SET nls_date_language='american';
- datetimepicker —— 日期选择控件
一.依赖 <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel=&qu ...
- python基础---字符串常用方法汇总
s3 = '123's2 = ' 's1 = 'This Is \t Cash's='abcdefghijklmnopqrstuvwxyz's4 = "0000000this is stri ...
- 开发者必知的8款App快速开发工具开发者必知的8款App快速开发工具
"我有一个好创意,就差一个CTO……" "原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了." "APP版本迭代更新,都是企业的一道难关 ...
- 02docker简单使用和配置(网络、存储和Hub)
四:网络 1:命名容器 在各种docker命令中,可以通过名字中找到对应的容器.之前创建的容器都是由docker自动命名的,可以在docker run中,通过--name参数指定容器的名字.比如: ...
- 现代IM系统中的消息系统架构 - 模型篇
前言 在架构篇中我们介绍了现代IM消息系统的架构,介绍了Timeline的抽象模型以及基于Timeline模型构建的一个支持『消息漫游』.『多端同步』和『消息检索』多种高级功能的消息系统的典型架构.架 ...
- 操作SDO_GEOMETRY字段
读取SDO_GEOMETRY字段 select to_char(regexp_replace(sdo_util.to_gmlgeometry(t.intsxn_geom),'</?[^> ...
- H3C 802.11协议的发展