4 条题解
-
0小鸟 (slz钟鼎皓) LV 8 @ 2024-4-9 16:27:49
#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; }
-
02021-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; }
-
-22023-7-1 10:00:53@
@赵青海这段代码是一个用于判断括号字符串的最长有效长度的程序。它首先定义了一个栈
stk
,用于存储字符的下标。然后读取输入的括号字符串s
。 接下来的循环中,判断栈是否为空。如果栈不为空,表示当前字符与栈顶字符可以组成有效括号对,则将栈顶元素出栈;否则,将当前字符的下标入栈。在每次操作后,更新答案ans
,即当前位置下标与栈顶元素下标之差,取较大值。 最后输出答案ans
,即括号字符串的最长有效长度。 注意:这段代码仅适用于括号字符串的判断,不适用于其他类型的字符串。 -
-22023-6-30 10:17:58@
我们使用栈来处理括号序列。遍历输入的括号序列,当遇到左括号时,将其下标入栈;当遇到右括号时,判断栈是否为空,若不为空则出栈一个左括号,并计算当前合法括号序列的长度。同时,我们使用一个变量ans来记录最长的美观子段的长度。如果栈为空时遇到非右括号的字符,说明当前位置不能作为合法子段的起点,需要重新设置起点位置。最后,返回ans作为结果,即最长的美观子段的长度。 注意,以上代码仅解决了括号序列只包含小括号、中括号和大括号的情况。如果输入的括号序列中包含其他类型的括号,需要进行相应的修改。
- 1
信息
- ID
- 61
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 100
- 已通过
- 57
- 上传者