喵哈哈村的括号序列
喵哈哈村的括號(hào)序列
發(fā)布時(shí)間: 2017年2月21日 20:05?? 最后更新: 2017年2月21日 20:07?? 時(shí)間限制: 1000ms?? 內(nèi)存限制: 128M
描述喵哈哈村的括號(hào)序列和外界的括號(hào)序列實(shí)際上是一樣的。
眾所周知"()"這樣的,就是一個(gè)標(biāo)準(zhǔn)的括號(hào)序列;"()()()()"這樣也是括號(hào)序列;“((()))()”這樣也是一個(gè)合法的括號(hào)序列。但是"((("這樣,就不是一個(gè)合法的括號(hào)序列了。
現(xiàn)在沈?qū)殞毞浅:闷?#xff0c;給你一個(gè)字符串,請(qǐng)從中找出最長(zhǎng)的合法括號(hào)序列出來(lái)。
不知道你能找到嗎?
輸入第一行一個(gè)T,表示有T組數(shù)據(jù)。
接下來(lái)T行,每一行都是一個(gè)字符串。
保證字符串的長(zhǎng)度小于100000。
而且字符串中保證只會(huì)出現(xiàn)"(",")"這兩種字符之一。
1<=T<=10
對(duì)于每一組測(cè)試數(shù)據(jù),輸出最長(zhǎng)的合法括號(hào)序列的長(zhǎng)度。
樣例輸入1 復(fù)制 2 )((())))(()()) )( 樣例輸出1 6 0用個(gè)stack就行了,注意一些特殊情況。
1 #include <iostream> 2 #include <string.h> 3 #include <stack> 4 #include <stdio.h> 5 #define N 100005 6 using namespace std; 7 char k[N]; 8 int ans[N]; 9 int main(){ 10 int n; 11 cin>>n; 12 while(n--){ 13 memset(k,0,sizeof(k)); 14 memset(ans,0, sizeof(ans)); 15 cin>>k; 16 stack<int> s; 17 int len=strlen(k),it=0,Max=0,cnt=0; 18 for(int i=0;i<len;i++){ 19 if(k[i]=='(') 20 s.push(i); 21 if(k[i]==')'&&!s.empty()){ 22 ans[s.top()]=1; 23 ans[i]=1; 24 s.pop(); 25 } 26 } 27 for(int i=0;i<len;i++){ 28 if(ans[i]==1){ 29 cnt++; 30 } 31 32 if(cnt&&ans[i]==0){ 33 Max=max(Max,cnt); 34 cnt=0; 35 } 36 37 if(i==len-1) 38 Max=max(Max,cnt); 39 } 40 cout<<Max<<endl; 41 } 42 return 0; 43 }
?
?轉(zhuǎn)載于:https://www.cnblogs.com/zllwxm123/p/7525593.html
總結(jié)
- 上一篇: Python3官方手册中文在线版
- 下一篇: 【研究】人大赵鑫老师报告:如何以初学者角