您的位置:首页 > 编程语言 > C语言/C++

[C++]连续最长括号匹配问题

2017-10-06 00:00 295 查看

测试代码

#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <stack>
using std::cout;
using std::cin;
using std::endl;
using std::stack;
using std::string;

int CalculateMaxMatch(string inputStr);

int main()
{
string inputStr;
cout << "请输入括号的字符串: ";
cin >> inputStr;
cout << "当前输入的括号字符串: " << inputStr << endl;
cout << "最长括号匹配是: " << CalculateMaxMatch(inputStr) << endl;
system("pause");
return 0;
}

//最长括号匹配问题
int CalculateMaxMatch(string inputStr) {
int length = inputStr.length();
stack<int> stack;
int max = 0;
int start = -1;
for (int i = 0; i < length; i++) {
char c = inputStr.at(i);
//如果是左括号则进栈
if (c == '(') {
stack.push(i);
}
//右括号则出栈匹配
else {
//栈不空的情况下才进行匹配 否则当前的右括号不存在与之匹配的左括号
if (!stack.empty()) {
stack.pop();
if (stack.empty()) {
if (max < i - start)
max = i - start;
}
else {
int t = stack.top();
if (max < i - t)
max = i - t;
}
}
else {
start = i;
}
}
}
return max;
}

测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: