2 条题解

  • 0
    @ 2025-10-8 16:56:07
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    char s[N]; int sta[N];
    bool pd(char c1, char c2)
    {
    	if(c1=='(' && c2==')') return 1;
    	else if(c1=='[' && c2==']') return 1;
    	else if(c1=='{' && c2=='}') return 1;
    	else return 0;
    }
    int main()
    {
    	scanf("%s", s+1); 
    	int ans=0, tp=0;
    	sta[++tp]=0;
    	for(int i=1; s[i]; i++) 
    	{
    		if(pd(s[sta[tp]], s[i]))  tp--; 
    		else sta[++tp]=i;
    		
    		ans=max(ans, i-sta[tp]);
    	}
    
    	printf("%d\n", ans);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 16:55:58
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e5+10;
      char s[N]; int sta[N];
      bool pd(char c1, char c2)
      {
      	if(c1=='(' && c2==')') return 1;
      	else if(c1=='[' && c2==']') return 1;
      	else if(c1=='{' && c2=='}') return 1;
      	else return 0;
      }
      int main()
      {
      	scanf("%s", s+1); 
      	int ans=0, tp=0;
      	sta[++tp]=0;
      	for(int i=1; s[i]; i++) 
      	{
      		if(pd(s[sta[tp]], s[i]))  tp--; 
      		else sta[++tp]=i;
      		
      		ans=max(ans,i-sta[tp]);
      	}
      
      	printf("%d\n", ans);
      	return 0;
      }
      • 1

      信息

      ID
      1293
      时间
      1000ms
      内存
      64MiB
      难度
      5
      标签
      递交数
      170
      已通过
      61
      上传者