字符串练习(七):合法括号序列判断

对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。

给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。

测试样例:

"(()())",6
返回:true

测试样例:

"()a()()",7
返回:false

测试样例:

"()(()()",7
返回:false
public class Parenthesis {
    public boolean chkParenthesis(String A, int n) {
        char[] arrC = A.toCharArray();
        int num = 0;
        int i = 0;
        while(i < arrC.length && num >= 0){
            if(arrC[i] == ‘(‘){
                num++;
            }else if(arrC[i] == ‘)‘){
                num--;
            }
            i++;
        }

        if(i < arrC.length || num != 0){
            return false;
        }
        return true;
    }
}
时间: 2024-12-24 02:58:37

字符串练习(七):合法括号序列判断的相关文章

字符串空格替换、合法括号序列判断、求最长无重复子串问题

一:字符串空格替换 将字符串中的空格全部替换为"%20".假定该字符串后面有足够的空间存放新增的字符. 如:Mr John Smith->Mr%20John 陷阱:Java玩家可能第一时间想到用split(" ")分割原字符串,然后重新拼接的时候在词间添加"%20".这种思路的不完善之处在于:如果原字符串以空格结尾.或者单词之间不止一个空格,则会导致拼接出来的字符串不符合要求. 解法:该题说明原字符串后面有足够空间(Java玩家可忽略,因为

合法括号序列判断

题目描述 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串. 测试样例: "(()())",6 返回:true 测试样例: "()a()()",7 返回:false 测试样例: "()(()()",7 返回:false class Parenthesis { public: bool chkParenthesis(string A, int n) { /

九度oj 题目1337:寻找最长合法括号序列

题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的左括号匹配.例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是. 需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数. 输入: 测试数据包括多个,每个测试数据包含两行: 第一行为一个整数N,其中N不会超过10^6. 第二行为一个长度为N的字

[Jobdu] 题目1337:寻找最长合法括号序列

题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的左括号匹配.例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是. 需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数. 输入: 测试数据包括多个,每个测试数据包含两行: 第一行为一个整数N,其中N不会超过10^6. 第二行为一个长度为N的字

九度oj 题目1342:寻找最长合法括号序列II

题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列. 输入: 测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106. 输出: 对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度. 样例输入: (())() (() 样例输出: 6 2 这个题和1337求的是不一样的代码如下

Catalan数,括号序列和栈

全是入门的一些东西.基本全是从别处抄的. 栈: 支持单端插入删除的线性容器. 也就是说,仅允许在其一端加入一个新元素或删除一个元素. 允许操作的一端也叫栈顶,不允许操作的一端也叫栈底. 数个箱子相叠就可以认为是一个栈,只能在最顶端加入一个新箱子或拿走一个箱子. 栈中的元素遵循后进先出(last in first out,LILO)的规律.即:更早出栈的元素,应为更早入栈者. 这是一个演示: 奇数行为栈中元素(右端可以进行插入删除),元素以逗号隔开, EMPTY表示栈为空 偶数行为进行的操作 EM

喵哈哈村的括号序列

描述 喵哈哈村的括号序列和外界的括号序列实际上是一样的. 众所周知"()"这样的,就是一个标准的括号序列:"()()()()"这样也是括号序列:"((()))()"这样也是一个合法的括号序列.但是"((("这样,就不是一个合法的括号序列了. 现在沈宝宝非常好奇,给你一个字符串,请从中找出最长的合法括号序列出来. 不知道你能找到吗? 输入 第一行一个T,表示有T组数据.接下来T行,每一行都是一个字符串.保证字符串的长度小于100

uoj #31. 【UR #2】猪猪侠再战括号序列 贪心

#31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Description 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫_CallMeGGBond. 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领域的兴趣:尤其是括号序列理论,一度令我沉浸其中,无法自拔.至于OI算法竞赛,我年轻时确有参加,虽仅获一枚铜牌,但我素性淡泊,毫不在意,毕竟那所谓FFT.仙人掌之类

Codevs (3657括号序列 )

题目链接:传送门 题目大意:中文题,略 题目思路:区间DP 这个题是问需要添加多少个括号使之成为合法括号序列,那么我们可以先求有多少合法的括号匹配,然后用字符串长度减去匹配的括号数就行 状态转移方程主要是对于我们枚举的区间 dp[i][j],如果 i 和 j 处的括号能够匹配,则dp[i][j]=dp[i+1][j-1]+1; 因为我们是从小到大枚举长度,所以小长度的区间一定是最优的,所以当 i 与 j 匹配时,则是子区间的最优值+1 #include <iostream> #include