博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20. Valid Parentheses
阅读量:7078 次
发布时间:2019-06-28

本文共 1119 字,大约阅读时间需要 3 分钟。

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.

 to see which companies asked this question

分析:

遇到'(', '{', '[' 就入栈,遇到')', '}', ']' 就和栈顶元素进行对比,相同则继续,不同返回false
其他false情形:
当对比时,栈已经empty了

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class 
Solution {
public
:
    
bool 
isValid(string s) {
        
stack<
char
> stk;
        
int 
len = s.size();
        
if
(0 >= len) 
return 
false
;
        
for
(
int 
i = 0; i < len; ++i){
            
if
(s[i] == 
'(' 
|| s[i] == 
'[' 
|| s[i] == 
'{'
){
                
stk.push(s[i]);
            
}
            
else
{
               
if
(stk.empty()){
                   
return 
false
;
               
}
               
else
{
                   
if
(match(stk.top(),s[i])){
                       
stk.pop();
                   
}
                   
else
{
                       
return 
false
;
                   
}
               
}
            
}
        
}
        
if
(stk.empty())
            
return 
true
;
        
else 
            
return 
false
;
    
}
    
bool 
match(
char 
c1, 
char 
c2){
        
switch
(c1){
            
case 
'('
:
            
return 
c2 == 
')'
;
            
case 
'{'
:
            
return 
c2 == 
'}'
;
            
case 
'['
:
            
return 
c2 ==
']'
;
            
default
:
            
return 
false
;
        
}
    
}
};
来源: 

转载于:https://www.cnblogs.com/zhxshseu/p/13d93dcf02420ae4542b294a754d818d.html

你可能感兴趣的文章
07_01_定义加载器(Webpack Book)
查看>>
Let's encrypt 通配域名DNS验证方式的证书自动更新
查看>>
PHP 框架学习(二):Laravel
查看>>
总结常见的违背Rest原则的接口设计做法
查看>>
JAVASCRIPT中THIS指的是什么?
查看>>
推荐一个全新的简单可扩展的基于MVC模式开发的PHP CMS系统:metacms
查看>>
基于 Laravel 的模块化开发框架
查看>>
将Medium中的博客导出成markdown
查看>>
D-Bus Tutorial
查看>>
Spring中的事务控制
查看>>
Promise的简单实现
查看>>
我的豆瓣短评爬虫的多线程改写
查看>>
netfilter 结构整理
查看>>
Golang TcpProxy和Nodejs TcpProxy
查看>>
『总结』jQuery常用函数方法
查看>>
Zsh 开发指南(第三篇 字符串处理之转义字符和格式化输出)
查看>>
shell终端常用快捷键和小技巧
查看>>
【教程】Edraw Max(亿图图示):怎么插入图片到思维导图中?
查看>>
【EASYDOM系列教程】之替换节点
查看>>
后端开发者从零做一个移动应用(后端篇)
查看>>