[Jobdu] 题目1337:寻找最长合法括号序列

题目描述:
给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配;所有的右括号都有唯一的左括号匹配。例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是。
需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数。
输入:
测试数据包括多个,每个测试数据包含两行:
第一行为一个整数N,其中N不会超过10^6。
第二行为一个长度为N的字符串,这个字符串由左括号'('和右括号')'组成。
输出:
对应每个测试案例,输出一行,其中包含两个整数,分别代表最长合法括号序列的长度和个数,中间由空格隔开。若没有合法的子序列存在,则返回0 1。
样例输入:
6
(())()
3
))(
样例输出:
6 1
0 1

用一个bool型的数组来标记匹配情况。

 1 #include <iostream>
 2 #include <stack>
 3 #include <string>
 4 #include <cstring>
 5 using namespace std;
 6  
 7 int n;
 8 string s;
 9  
10 void getRes() {
11     bool a[s.length()];
12     memset(a, false, s.length());
13     stack<int> st;
14     for (int i = 0; i < s.length(); ++i) {
15         if (s[i] == '(') {
16             st.push(i);
17         } else {
18             if (!st.empty()) {
19                 a[i] = true;
20                 a[st.top()] = true;
21                 st.pop();
22             }
23         }
24     }
25  
26     int max = 0, cnt = 1, tmp = 0;
27     for (int i = 0; i < s.length(); ++i) {
28         if (a[i]) {
29             ++tmp;
30         } else {
31             tmp = 0;
32         }
33         if (max == tmp && max != 0) {
34             ++cnt;
35         } else if (max < tmp) {
36             max = tmp;
37             cnt = 1;
38         }
39     }
40     cout << max << " " << cnt << endl;
41 }
42  
43 int main() {
44     while (cin >> n) {
45         cin >> s;
46         getRes();
47     }
48     return 0;
49 }
50  
51 /**************************************************************
52     Problem: 1337
53     User: hupo250
54     Language: C++
55     Result: Accepted
56     Time:310 ms
57     Memory:7604 kb
58 ****************************************************************/

 

转载于:https://www.cnblogs.com/easonliu/p/3899543.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑电视兼容成科技行业新课题

随著深受网民喜爱的网络娱乐节目层出不穷&#xff0c;科技行业一个尚未解决的问题被提上日程&#xff1a;发明让用户得以在电视机上随意收看网络节目的产品。眼下&#xff0c;微软(Microsoft Corp.)、苹果电脑(Apple Computer Inc.)和英特尔(Intel Corp.)等多家行业巨头正在紧锣…

LeetCode—49. 字母异位词分组

49. 字母异位词分组 题目描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词&#xff0c;所有源单词中的字母通常恰好只用一次。 考察重点&#xff1a;转为…

标准模板库(STL)学习指南之List容器

原文地址&#xff1a;http://dozb.bokee.com/1872684.html [文章导读]STL的目的是标准化组件&#xff0c;这样就不用重新开发&#xff0c;可以使用现成的组件[正文] 什么是STL呢&#xff1f;STL就是Standard Template Library&#xff0c;标准模板库。这可能是一个历史上最令人…

移动web性能优化笔记

移动web性能优化 最近看了一些文章&#xff0c;对移动web性能优化方法&#xff0c;做一个简单笔记 笔记内容主要出自 移动H5前端性能优化指南和移动前端系列——移动页面性能优化 转载于:https://www.cnblogs.com/GongQi/p/4534392.html

mysql04

连接查询 连接方式 1.交叉连接&#xff1a;交叉连接是将两个表不设定任何条件的连接结果。这种方式会产出好多个无效行。所以不用。 2.内连接 语法 select * from tb_name join tb2_name on tb_name.idtb2_name.id(注意 两个id字段的值应该是相等的&#xff09; 3.外连接 左&am…

还是动态生成一个控件

首先&#xff0c;利用System.Type.GetType方法&#xff0c;获得字符串中指定的控件的类型实例。 这里需要注意这个字符串的语法&#xff0c;根据msdn的解释&#xff1a; 按名称和签名隐藏会考虑签名的所有部分&#xff0c;包括自定义修饰符、返回类型、参数类型、标记和非托管调…

面向对象和面向过程的区别

面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象&#xff0c;建立对象的目的不是为了完成一个步骤&#xff0c;而是为了描叙某个事物在整个解…

LeetCode—284. 顶端迭代器

284. 顶端迭代器 题目描述&#xff1a; 请你在设计一个迭代器&#xff0c;在集成现有迭代器拥有的 hasNext 和 next 操作的基础上&#xff0c;还额外支持 peek 操作。 实现 PeekingIterator 类&#xff1a; PeekingIterator(Iterator nums) 使用指定整数迭代器 nums 初始化迭…

sql查询

连接查询&#xff08;多表查询&#xff09; from 表1 [连接方式] join 表2 [on 连接条件]&#xff1b; 交叉连接&#xff1a; select * from 表1 join 表2 交叉查询查出的数据比较混乱 所以用的比较少。 内连接&#xff1a; from 表1 [inner] join 表2 on 表1.字段1…

我想和你一起去这样一个地方

当我从网站看到这则图片,我不禁惊叹有这样一个世外桃源,可以这样漂亮这样水天一色,我是多渴望能够与深爱的人一起去这个地方,享受我们休闲的白天,度过我们浪漫的夜晚,就这样,我也愿意和你每天每夜呆在一起.当我看到这则相片的时候,我心里只想着他,想和他一起去度假,我很喜欢痴住…

LeetCode—50. Pow(x, n)

50. Pow(x, n) 题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;x^n &#xff09;。 考察重点&#xff1a;倍乘&#xff0c;使用递归&#xff0c;每次addN取2,4,8,16…个数进行累乘&#xff0c;直到addN > n,则用n-ad…

Vue学习笔记(八) 组件进阶

1、插槽 &#xff08;1&#xff09;插槽内容 像 HTML 元素一样&#xff0c;我们常常需要给组件传递内容 比如在下面的例子中&#xff0c;我们给自定义组件 prompt-info 传入 出错啦 的文本 <!DOCTYPE html> <html><head><title>Demo</title><…

php结合jquery异步上传图片(ajaxSubmit)

2019独角兽企业重金招聘Python工程师标准>>> php结合jquery异步上传图片&#xff08;ajaxSubmit&#xff09;&#xff0c;以下为提交页面代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/T…

使 Framework 2.0 的程序集不用安装 Framework 就可以运行的工具免费发布了

感谢大家长时间以来对 MaxtoCode 的支持.Jason.NET 决定推出一款免费的 Framework 2.0 打包工具.它可以使你的 .NET 程序在不安装 Framework 的情况下依然正常运行. 下面有一个 著名的大型开源项目 SharpDevelop (C# 的 IDE) 的例子. 下载地址: http://www.maxtocode.com.cn/do…

LeetCode—287. 寻找重复数

287. 寻找重复数 题目描述&#xff1a; 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有一个重复的整数 &#xff0c;返回这个重复的数 。 你设计的…

发发牢骚,觉得走c#这条路,不该太浮躁

校园招聘结束了&#xff0c;腾讯&#xff0c;华为&#xff0c;百度&#xff0c;完美时空&#xff0c;网易&#xff0c;阿里&#xff0c;让我觉得.NET很受歧视。清一色的C/C,JAVA&#xff0c;只有网易有一点.Net的&#xff0c;但是都是非核心的运维工作。 不错&#xff0c;招.N…

Microsoft Windows Workflow Foundation 入门

Microsoft Windows Workflow Foundation 的包含在 .Net Framework 3.0 中&#xff0c;除此之外i&#xff0c;基于它做开发还要安装 Visual Studio 2005 Extensions for Windows Workflow Foundation 。本文撰写的对象为 Windows Workflow Foundation beta 1&#xff1a;开发人员…

套套

5.9 第一个跑入mc&#xff0c;人数不够&#xff0c;活动取消&#xff0c;未参加。5.12 网络断&#xff0c;在实验室开会5.14 网络断5.19 mc 1-9&#xff0c;20dkp&#xff0c;未拿东西5.26 mc 1-9 夜幕杀杀手护腿.-4 dkp5.30 购买 夜幕杀手护腕 100G6.2 和BWL活动冲突&#xff…

Typecho 新浪登陆插件 Sinauth

花了点时间弄了一个插件。 代码地址&#xff1a;https://github.com/web3d/plugins/tree/master/Sinauth Typecho的扩展机制还是比较完善的&#xff0c;可以自行增加Action、Route、扩展现有Widget功能、后台插件配置界面等。 偷懒&#xff0c;使用的是SAE中封装的sdk访问新浪开…

LeetCode—51. N 皇后(困难)

51. N 皇后&#xff08;困难&#xff09; 题目描述&#xff1a; n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击&#xff0c;即令其中任意两个皇后都不同列、同行和在一条斜线上。 给你一个整数 n &#xff0c;返回所有不…