zoukankan
html css js c++ java
堆栈小应用:配对
在“配对”问题中,栈将使问题大大简化和更富逻辑性。一个简单的例子,我们来看看如何判断表达式中的小括号是否配对。如果没有栈,这问题就不会那么美妙了。
只要你脑袋里能联想到“栈”这个词,解决方案就会变得非常简单。
遍历表达式,遇到左括号则进栈,遇到有括号则将栈顶左括号弹出,遍历完后,栈应该为空。如果不能顺利执行此过程那么表达式的括号则一定不匹配。
#include
<
iostream
>
#include
<
string
>
#include
<
stack
>
using
namespace
std;
int
main()
{
stack
<
char
>
stk;
string
exp;
bool
ok
=
true
;
cin
>>
exp;
const
int
len
=
exp.length();
for
(
int
i
=
0
; i
<
len; i
++
)
{
if
(exp[i]
==
'
(
'
)
{
stk.push(exp[i]);
}
else
if
(exp[i]
==
'
)
'
)
{
if
(
!
stk.empty())
{
stk.pop();
}
else
{
cout
<<
"
not find \'(\' for \')\' at index of
"
<<
i
<<
endl;
ok
=
false
;
}
}
}
if
(
!
stk.empty())
{
cout
<<
"
not find \')\' for \'(\'
"
<<
endl;
ok
=
false
;
}
if
(ok)
{
cout
<<
"
ok
"
<<
endl;
}
return
0
;
}
查看全文
相关阅读:
sql STUFF用法
关于原型链
原生js事件绑定
http常见7种请求
关于linux的一些常用的指令
flex布局详解
html5 新增元素以及css3新特性
css浮动以及清除
css 浮动
计算机网络
原文地址:https://www.cnblogs.com/zhouyinhui/p/395117.html
最新文章
前端进度报告(2018.6.3)
DeltaFish 校园物资共享平台 第六次小组会议
部分设计文档
Project Management -- How to use GitHub with Git
Burn Down Chart(2018.5.28~2018.6.3)
竞争性需求分析
绩效考核(2018.4.0~2018.5.24)
后端进度报告(2018.5.17)
C# 不使用Task实现的多线程顺序执行
C# Lambda快速深度拷贝
热门文章
C# IL中间代码注入实现切面编程
C# Dynamic通用反序列化Json类型并遍历属性比较
3D柜体导出CAD优化参考方案
软件工具组功能逆向工程设想
Java学习之系统高可用性渲染接口日志自动服务降级
Java学习之数据的时间及热度属性
Java学习之ZooKeeper瑞士军刀简介
Java学习之SpringMVC零配置实践
SQL中distinct的用法
关于SQL Server将一列的多行内容拼接成一行的问题讨论
Copyright © 2011-2022 走看看