在一个字符串中,寻找包含最长的有效括号的子字符串。
如:输入字符串“(a))”最长有效括号为(a)
字符串“()())”最长有效括号为()()
字符串“a)((b)(c)d”最长有效括号为(b)(c)
字符串“a)((b)(c)d)”最长有效括号为((b)((c)d)
想到用栈来做,解决了括号的问题解决不了字母的问题,将字母放进队列中解决不了开头几个字母的问题
寻找最长有效括号的子字符串
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
天际的海浪 2022-07-01 18:40关注你题目的解答代码如下:
#include <iostream> #include <string> using namespace std; int main() { string str, str2; int q[1000], l=0, i, si=9999999,ei=0,ts; getline(cin,str); for (i = 0; i < str.size(); i++) { if (str[i]=='(') { q[l++] = i; } else if (str[i]==')' && l>0) { ts = q[--l]; if (ts < si) si = ts; ei = i; } } str2 = str.substr(si, ei-si+1); cout << str2; return 0; }如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用