[C++]连续最长括号匹配问题解决策略二(学习)
2017-10-06 00:00
726 查看
测试代码
#include "stdafx.h" #include <cstdlib> #include <iostream> #include <string> using std::cout; using std::cin; using std::endl; using std::string; //统计连续配对的左右括号 int GetLongestMatch(string inputStr) { int maxLength = 0; //记录最长的括号匹配长度 int deep = 0; int start = -1; //适合处理右括号数大于左括号数 for (int i = 0; i < inputStr.length(); i++) { char c = inputStr.at(i); if (c == '(') { deep++; } else { deep--; if (deep == 0) { maxLength = maxLength < (i - start) ? i - start : maxLength; } //右括号数大于左括号数 不连续 重新计数 if(deep < 0){ start = i; deep = 0; } } } deep = 0; start = inputStr.length(); //适合处理左括号数大于右括号数 for (int i = inputStr.length() - 1; i >= 0; i--) { char c = inputStr.at(i); if (c == ')') { deep++; } else { deep--; if (deep == 0) { maxLength = maxLength < (start - i) ? start - i : maxLength; } else if (deep < 0) { deep = 0; start = i; } } } return maxLength; } int main() { string inputStr; cout << "请输入括号对:"; cin >> inputStr; cout << "最长匹配结果: " << GetLongestMatch(inputStr) << endl; system("pause"); return 0; }
测试结果
相关文章推荐
- [C++]连续最长括号匹配问题解决策略二(学习)
- [C++]连续最长括号匹配问题
- [C++]连续最长括号匹配问题
- 用C++链式栈解决数据结构中的括号匹配问题。
- 【学习笔记】〖九度OJ〗题目1153:括号匹配问题
- C++学习之:括号匹配与栈的使用
- 链栈的简单实现及括号匹配问题的链栈解决方法
- 九度笔记之 1342:寻找最长合法括号序列II(25分)-给括号当红娘,解决最长合法字符串问题
- 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
- 用堆栈解决括号匹配问题(C语言)
- 数据结构之括号匹配问题的解决
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- (学习笔记)C++括号匹配----栈的应用
- 最长括号匹配问题
- 栈用于解决括号匹配问题
- Java 用栈解决括号匹配问题
- C++学习:Calc的赋值问题解决了,解决方法:先刷新控件值至相应变量
- 括号匹配问题(C++、堆栈)
- 数据结构中的栈,在解决很多问题都有用处,比如括号匹配,迷宫求解,表达式求值等等 java中有封装好的类,可以直接调用。
- 关于使用栈解决括号匹配的问题