[C++]连续最长括号匹配问题解决策略二(学习)
2016-11-16 22:20
267 查看
测试代码
#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++链式栈解决数据结构中的括号匹配问题。
- (学习笔记)C++括号匹配----栈的应用
- C++学习:Calc的赋值问题解决了,解决方法:先刷新控件值至相应变量
- C++学习笔记第一天:熟悉C++,解决“Cannot find or open the PDB file”问题
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- 最长的含有相同数目的01子串 & 括号匹配问题
- 九度笔记之 1342:寻找最长合法括号序列II(25分)-给括号当红娘,解决最长合法字符串问题
- 两个问题:n对括号有多少种匹配方式与与最长递减子序列
- 关于使用栈解决括号匹配的问题
- 用堆栈解决括号匹配问题(C语言)
- 【学习笔记】〖九度OJ〗题目1153:括号匹配问题
- 【学习笔记】〖九度OJ〗题目1153:括号匹配问题
- 算法学习 - 括号匹配(栈实现)C++
- 链栈的简单实现及括号匹配问题的链栈解决方法
- 用栈的链式存储结构来解决括号匹配问题
- 括号匹配问题(C++、堆栈)
- Java 用栈解决括号匹配问题