4 条题解

  • 0
    #include <iostream>
    #include <algorithm>
    #include <stack>
    #include <string>
     
    using namespace std;
     
    stack<int>stk;
    string s;
     
    int main()
    {
        cin>>s;
        int ans=0;
        for(int i=0;i<s.size();i++){
            if(stk.size()){
                char t=s[stk.top()];
                if(s[i]=='}'&&t=='{'||s[i]==')'&&t=='('||s[i]==']'&&t=='[') stk.pop();
                else stk.push(i);
            }
            else stk.push(i);
            if(stk.size()) ans=max(ans,i-stk.top());
            else ans=max(ans,i+1);
        }
        cout<<ans<<endl;
        return 0;
    }
    
    • 0
      @ 2021-8-7 20:58:03

      C++ :

      
      #include <iostream>
      #include <algorithm>
      #include <stack>
      #include <string>
       
      using namespace std;
       
      stack<int>stk;//栈中存相应字符的下标
      string s;
       
      int main()
      {
          cin>>s;
          int ans=0;
          for(int i=0;i<s.size();i++){
              if(stk.size()){
                  char t=s[stk.top()];
                  if(s[i]=='}'&&t=='{'||s[i]==')'&&t=='('||s[i]==']'&&t=='[') stk.pop();
                  else stk.push(i);
              }
              else stk.push(i);
              if(stk.size()) ans=max(ans,i-stk.top());
              else ans=max(ans,i+1);
          }
          cout<<ans<<endl;
          return 0;
      }
      
      • -2
        @ 2023-7-1 10:00:53

        @赵青海这段代码是一个用于判断括号字符串的最长有效长度的程序。它首先定义了一个栈 stk,用于存储字符的下标。然后读取输入的括号字符串 s。 接下来的循环中,判断栈是否为空。如果栈不为空,表示当前字符与栈顶字符可以组成有效括号对,则将栈顶元素出栈;否则,将当前字符的下标入栈。在每次操作后,更新答案 ans,即当前位置下标与栈顶元素下标之差,取较大值。 最后输出答案 ans,即括号字符串的最长有效长度。 注意:这段代码仅适用于括号字符串的判断,不适用于其他类型的字符串。

        • -2
          @ 2023-6-30 10:17:58

          我们使用栈来处理括号序列。遍历输入的括号序列,当遇到左括号时,将其下标入栈;当遇到右括号时,判断栈是否为空,若不为空则出栈一个左括号,并计算当前合法括号序列的长度。同时,我们使用一个变量ans来记录最长的美观子段的长度。如果栈为空时遇到非右括号的字符,说明当前位置不能作为合法子段的起点,需要重新设置起点位置。最后,返回ans作为结果,即最长的美观子段的长度。 注意,以上代码仅解决了括号序列只包含小括号、中括号和大括号的情况。如果输入的括号序列中包含其他类型的括号,需要进行相应的修改。

          • 1

          信息

          ID
          61
          时间
          1000ms
          内存
          128MiB
          难度
          3
          标签
          递交数
          96
          已通过
          53
          上传者