问题:假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
输入:测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过10的6次方。
输出:对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度。
样例输入:
(())()
(()
样例输出:
6
2
实现代码:
#include <iostream>
#include <stack>
#include <string>
#include <string.h>
using namespace std;
int main(int argc,char **argv){
string line;
int i,cnt=0;
stack<char> s;
for(;cin>>line;){
char *cs=new char[line.size()+1];
memset(cs,0,line.size()+1);
memcpy(cs,line.c_str(),line.size());
s.push(cs[0]);
for(cnt=0,i=1;i<line.size();++i){
if(cs[i]==')'&&!s.empty()&&s.top()=='(') {
cnt+=2;
s.pop();
}else s.push(cs[i]);
}
cout<<cnt<<endl;
delete cs;
for(;!s.empty();) s.pop();
}
return 0;
}
运行结果:
- 大小: 16.6 KB
- 大小: 16.9 KB
分享到:
相关推荐
寻找最长合法括号序列 **问题描述:** 题目要求找出最长的合法括号序列。合法括号序列是指括号对匹配且不交叉的括号序列。例如,"()" 和 "(()())" 是合法的,而 "(())(" 则不是。 **解题思路:** 1. **使用栈记录...
12. **括号匹配**:如计算有效的括号组合,利用动态规划构建状态表示当前未关闭的左括号数量,找到合法组合。 这些动态规划问题覆盖了基础到进阶的各种应用场景,通过理解和解决这些问题,初学者能够逐步建立起动态...
4. 1141 Brackets Sequence:与括号匹配相关,可以使用动态规划来确定合法括号序列。 5. 1160 Post Office:经典的最短路径问题,可以使用动态规划或Floyd-Warshall算法。 6. 1458 Common Subsequence:寻找两个字符...
- 判断括号合法性、寻找最长回文子串等题目的解题方法。 - 跳跃游戏、链表反转等算法问题的贪心算法解法。 10. **计算机技术** - Linux系统中进程、线程、文件描述符的概念。 - Linux shell的基础知识和实用...
9. **有效括号字符串**:检查一个字符串是否为有效括号序列,如"()"、"[]{}"等。 在LeetCode中,通过标签“Stack”,我们可以找到这些类别的题目,进行练习和学习,从而加深对栈数据结构的理解和运用。同时,这也有...
合法的表达式是由合法的标识符(数字字符串)和运算符(括号、加减)构成的。可以通过递归函数或者动态规划数组dp[i]表示长度为i的合法表达式的数量,然后利用运算规则进行状态转移。对于每个长度n,计算出合法...
26. **Python列表操作实例**:给定的程序段分析列表`a`中连续的递增子序列,计算最长递增子序列的长度和当前最长递增子序列的长度。程序执行后,`c`记录当前连续递增子序列的长度,`m`记录最长递增子序列的长度。...
#### 如何寻找最长回文子串、运用贪心思想玩跳跃游戏 - 提供用贪心算法解决特定问题的思路和方法。 #### 如何k个一组反转链表、判定括号合法性 - 介绍链表操作技巧,以及用栈来判断括号合法性。 #### 如何寻找缺失...
括号序列2**、**leetcode 1614.括号的最大嵌套深度**、**NC175.合法的括号字符串**:括号匹配问题,通常用栈来解决。 - **leetcode 面试题08.08.有重复字符串的排列组合**、**leetcode 77.组合**:组合问题,可能...
- **最长公共子序列**:寻找两个序列中最长的不降序子序列。 - **背包问题**:在给定容量的背包中,如何选择物品以达到最大价值。 4. **图论算法**: - **Dijkstra算法**:找到图中从源节点到其他所有节点的最短...
例如,“有效的括号”题需要使用栈来检查括号字符串是否合法。 5. **二叉树**:二叉树题目包括遍历、平衡二叉树、最近公共祖先等。其中,“二叉树的最近公共祖先”要求找到两个指定节点在二叉树中的最近公共祖先。 ...
9. **生成括号**:该问题扩展了有效括号的概念,要求生成所有合法的括号组合。 10. **电话号码的字母组合**:该问题通常使用回溯算法,将数字映射到对应的字母组合。 11. **移除数组中的重复项**:该问题考察数组...
题目描述:给定一个括号序列,需要判断其是否合法。此类问题可以通过动态规划来解决,通过记录前缀序列的括号匹配状态来判断整个序列的合法性。 **案例分析:Pku1191—棋盘分割** 题目描述:给定一个n×m的棋盘,...
字符串解析中常见问题,用于验证括号序列的正确性,通常使用栈数据结构解决。 ### 27. 子字符串查找 字符串搜索的基本问题,可能采用KMP算法、哈希函数或自动机等高级方法提高效率。 ### 28-29. 子字符串统计 ...
- **括号合法性验证**:判断由括号组成的字符串是否合法,即每种括号类型是否成对出现并正确嵌套。通常使用栈来存储未闭合的括号,遇到闭合括号时检查栈顶元素是否匹配。 - **数轴上的鱼**:考虑一系列在数轴上向左...
7. **回溯**:回溯法用于解决组合优化问题,如八皇后问题、N个括号的合法组合等,锻炼解决问题的全面性和避免无效计算的能力。 8. **贪心**:贪心算法在部分最优解上寻找全局最优解,如活动选择问题、最小生成树等...
7. **动态规划**:动态规划是一种求解最优化问题的方法,常用于解决背包问题、最长公共子序列等。例如,"爬楼梯"问题可以通过动态规划状态转移方程求解。 8. **贪心算法**:贪心算法在每一步选择当前最优解,用于...