栈,模拟

  • 把每个元素逐个入栈
  • 如果和栈顶元素匹配,那么一块弹出去,同时标记这里是可匹配的。
  • 取出连续的,最长的可匹配的序列即可。
#include <iostream>
#include <stdio.h>
#include <string.h>
#define re register
#define Clean(X,K) memset(X,K,sizeof(X))
using namespace std ;
const int Maxl = 1000005 ;
string S ;
char A[Maxl] ;
int Ans = 0 , Now = 0 , Top = 1 , M[Maxl] , Lc[Maxl] , From;
int main () {
// freopen ("P1944.in" , "r" , stdin) ;
getline (cin , S) ;
int L = S.length() ;
Clean(M , 0) , Clean(A , 0);
for (re int i = 0 ; i < L ; ++ i) {
if (S[i] == ')' && A[Top] == '(' ) {
-- Top , M[i] = M[Lc[Top + 1]] = 1 ;
continue ;
}
if (S[i] == ']' && A[Top] == '[' ) { -- Top , M[i] = M[Lc[Top + 1]] = 1 ;
continue ;
}
A[++ Top] = S[i] ;
Lc[Top] = i ;
}
for (re int i = 0 ; i < L; ++ i) {
if (M[i]) ++ Now ;
else {
if (Now > Ans) {
Ans = Now ;
From = i - 1 ;
}
Now = 0 ;
}
}
int St=0;
for (re int i = From ; i >= 0 ; -- i ) if (!M[i]) {
St = i + 1;
break ;
};
for (re int i = St ; i <= From ; ++ i) putchar(S[i]) ;
fclose (stdin) , fclose (stdout) ;
return 0 ;
}

最新文章

  1. 让python在hadoop上跑起来
  2. jquery-drawsvg — HTML5轻量级插件
  3. [转] java书籍(给Java程序猿们推荐一些值得一看的好书 + 7本免费的Java电子书和教程 )
  4. UCOS2_STM32F1移植详细过程(二)
  5. 【每日scrum】NO.7
  6. android 拦截事件
  7. 一些常用css技巧的为什么(二)我所理解的line-height
  8. centos wordpress
  9. Fedora 下 安装 chrome
  10. iOS开发——生成二维码——工具类
  11. Visual Studio 2013如何破解(密钥激活)
  12. 【Ecstore2.0】第三方信任登陆问题解决_备忘
  13. Java基础学习笔记1
  14. centos下yum安装crontab+mysql自动备份
  15. ios扫雷
  16. 使用百度云同步盘和Git Extensions进行代码托管
  17. linux tar命令 压缩、打包、解压 详解
  18. ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)
  19. .NET Core微服务之基于Consul实现服务治理(续)
  20. 3D中的旋转变换

热门文章

  1. Git报错 bad numeric config value &#39;100000&#39; for &#39;pack.windowmemory&#39;: out of range
  2. JAVA之enum类详解
  3. 第3章 简单的C程序设计——顺序程序设计
  4. 跟我一起学opencv 第二课之图像的掩膜操作
  5. Python--开发简单爬虫
  6. java~IDEA引用包时分组所有java包
  7. Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
  8. [Javascript] js的类和对象
  9. Abp.Castle.Log4Net : Method &#39;get_IsTraceEnabled&#39; does not have an implementation
  10. Redis分布式队列和缓存更新