这道题比较奇怪,它的匹配规则并不是我们平时想想的那种匹配规则,例如:平时的匹配规则是()、{}、[]才能匹配,本题中(和} 、]、)都能匹配。所以做题时要好好审题。另外,本题中给的测试用例是错误的。

// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"
#include<vector>
#include<iostream>
#include<string>
#include <stack>
using namespace std; class ChkExpression {
public:
bool chkLegal(string A) {
stack<char> inStack;
stack<char> outStack;
for (int i = 0; i < A.size(); i++)
{
inStack.push(A[i]);
}
while (!inStack.empty())
{
char ch = inStack.top();
bool flag = true; cout << inStack.top() << " ";
if (!outStack.empty() )
{
cout << outStack.top() << endl;
}
else
{
cout << "空" << endl;
}
switch (ch)
{
case '}':
outStack.push('}');
inStack.pop();
break;
case ']':
outStack.push(']');
inStack.pop();
break;
case ')':
outStack.push(')');
inStack.pop();
break;
case '{':
if (!outStack.empty() )
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
} break;
case '[':
if (!outStack.empty() )
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
}
break;
break;
case '(':
if (!outStack.empty() )
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
}
break;
/* case '{':
if (!outStack.empty() && outStack.top() == '}')
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
} break;
case '[':
if (!outStack.empty() && outStack.top() == ']')
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
}
break;
case '(':
if (!outStack.empty() && outStack.top() == ')')
{
outStack.pop();
inStack.pop();
}
else
{
flag = false;
}
break;*/
default:
inStack.pop();
break;
}
if (flag == false)
{
break;
}
}
if (outStack.empty() && inStack.empty())
{
return true;
}
else
{
return false;
} }
}; int main()
{
string A = "[a+b*(5-4)]*{x+b+b*(1+2)}";
ChkExpression ce;
cout << ce.chkLegal(A) << endl;
return 0;
}

写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。) 给定一个表达式A,请返回一个bool值,代表它是否合法。的更多相关文章

  1. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  2. 假设写一段代码引导PC开机这段代码是 ? Here is a tiny &quot;OS&quot; :-D

    Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download ...

  3. 用for循环写这段代码

    之前用while循环写了一段代码,现在改为用for循环来写,代码如下: hongtao_age = 38 for i in range(5): guess_age = int(input(" ...

  4. JavaScript-navigator_userAgent-编写一段代码能够区分浏览器的主流和区分

    1 userAgent:包含浏览器名称和版本号的字符串 <!DOCTYPE html> <html> <head lang="en"> < ...

  5. 代码安全丨第六期:XPath注入漏洞样例

    1.什么是XPath注入漏洞? XPath是一种用来在内存中导航整个XML树的语言,它使用路径表达式来选取XML文档中的节点或者节点集. XPath注入是指程序使用外部输入动态构造用于从XML数据库检 ...

  6. PHP写一段代码,确保多个进程同时写入一个文件成功

    这个需求是在软件设计过程常见的加锁.学计算机的同学都应该知道,这个是在<计算机操作系统>课程上有这个知识点.主要要考虑的是进程的同步,也就是进程对资源的互斥访问.OK,用程序说话吧! &l ...

  7. 写一段代码在遍历 ArrayList 时移除一个元素?

    该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法.这有一段示例代码,是使用正确的方式来实现在遍历的过程中移 除元素,而不会出现 ...

  8. 用 wait-notify 写一段代码来解决生产者-消费者问题

    在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件.请参考答案中的示例代码. [生产者] import java.util.Vector; import java ...

  9. 用 wait-notify 写一段代码来解决生产者-消费者问题?(答案)

    请参考答案中的示例代码.只要记住在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件.

随机推荐

  1. 学习总结——JMeter做http接口压力测试

    JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...

  2. springBoot api接口

    application/json 请求接口 @RequestMapping(value = "/getBaseData", method = RequestMethod.POST, ...

  3. AC日记——食物链 codevs 1047

    1074 食物链 2001年NOI全国竞赛  时间限制: 3 s  空间限制: 64000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 动物王国中有 ...

  4. viewpager+fragment出现TransactionTooLargeException的大坑!!!

    最近apk包发给部分测试用户,反馈出现很多崩溃,异常是android.os.TransactionTooLargeException,看表面意思就是传送的数据太大,可是检查代码并没有传输很大的数据啊. ...

  5. 使用企业微信的API给指定用户发送消息

    上个月比较忙,等不忙了继续写点基础教程(五一还在高铁上写项目在).因为公司的原因,自己学习了点JavaWeb的知识,重新写了一个简单的后台管理,用于记录用户注册信息的.其中有这样的一个要求,就是在用户 ...

  6. luogu P1336 最佳课题选择

    题目描述 Matrix67要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择.由于课题数有限,Matrix67不得不重复选择一些课题.完成不同课题的论文所花的时间不同.具体地说,对于某个课题i ...

  7. EOJ Monthly 2018.7

    准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...

  8. IIS 7 Access to the path ‘c:\windows\system32\inetsrv\’ is denied

    https://randypaulo.wordpress.com/2011/09/13/iis-7-access-to-the-path-cwindowssystem32inetsrv-isdenie ...

  9. Displaying Modal Window Messages in Oracle Forms Using Show_Alert

    You can display modal windows in Oracle Forms to display normal messages, error message or asking fo ...

  10. 前台页面获取servlet传过来的数据

    servlet中的代码: public void doGet(HttpServletRequest request, HttpServletResponse response) throws Serv ...