<每日 1 OJ> -LeetCode20. 有效的括号

题目:

给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例 2:

输入: "()[]{}"
输出: true
示例 3:

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

输入: "{[]}"
输出: true

代码:

bool isValid(char* s)
{
    if( s == NULL )
        return false;
    char *stack = (char *) malloc( sizeof(char) * ( strlen(s)+1 ) );
    int top = 0;
    for( int i=0; s[i]!=‘\0‘; i++)
    {
        if(s[i]==‘(‘ || s[i]==‘[‘ || s[i]==‘{‘) //左括号入栈
            stack[++top] = s[i];
        else if( (s[i]==‘)‘&&stack[top]==‘(‘) || (s[i]==‘]‘&&stack[top]==‘[‘) || (s[i]==‘}‘&&stack[top]==‘{‘) ) //右括号比对
            top--;
        else    //比对失败
            return false;
    }
    if( stack!= NULL)
    {
        free(stack);
        stack = NULL;
    }
    if( top == 0 )  //字符串结束且栈空
        return true;
    return false;

}

原文地址:https://www.cnblogs.com/mhq-martin/p/11437680.html

时间: 2024-10-25 18:06:48

<每日 1 OJ> -LeetCode20. 有效的括号的相关文章

LeetCode20——有效的括号

在记事本中写算法题和在纸上写其实感觉差不多,反正是不能进行调试.想起某高手的话,写代码要做到"人机合一",写高级语言时(指的是 C 和 C++)脑海中要知道当前写的代码对应的反汇编代码,也就是要深入了解编译器对高级语言的处理.什么时候能达到这样的境界呢? LeetCode 题库的第 20 题--有效的括号 我做题的习惯跟考试的习惯差不多,先找会做的,然后再慢慢啃不会的.本着一个原则,不用编译器,不去找答案,不会说明基础不牢固,继续补基础. 题目我截图过来. 上面的图是题目和给出的示例,

leetcode20. 有效的括号 &#127775;

题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认为是有效字符串. 示例 1: 输入: "()" 输出: true示例 2: 输入: "()[]{}" 输出: true示例 3: 输入: "(]" 输出: false示例 4: 输入: "([)]" 输出: false示例

LeetCode20 栈&#183;有效的括号(C++)

题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认为是有效字符串. 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: fa

SQL查询字段添加括号报错:Operand should contain 1 column(s)

SQL语句:查询连个字段的信息 SELECT (menu_id,menu_captions) FROM bsdb.menulist a WHERE a.menu_id like ('2_'); 然后,因为这是在存储过程中的一个语句所以,在执行存储过程的时候编译不会报错,但是执行的时候却汇报错:Operand should contain 1 column(s):原因不好解释: 下面是官方发解释(MYSQL):https://dev.mysql.com/doc/refman/5.0/en/row-

leetcode栈--5、valid-parentheses(有效括号)

题目描述 Given a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid. The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not.

shell中各种括号的作用

小括号里是命令大括号是变量值   一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b

数据结构(括号序列,线段树):ZJOI 2007 捉迷藏

[题目描述] Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达. 游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯.在起初的时候,所有的灯都没有被打开.每一次,孩子们只会躲 藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要求打开某个房间的电灯或者关闭某个房间的电灯.为了评估某一次

南阳OJ-2 括号配对 (数据结构-栈的应用)

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组.数据保证S中只含有"[","]","(",")"四种字符 输出 每组输入数据的输出占一行,

正则表达式匹配括号中的字符,不包括括号

(?<=\()\S+(?=\)) (?<=exp)是以exp开头的字符串, 但不包含本身.(?=exp)就匹配惟exp结尾的字符串, 但不包含本身. (?<=\()    也就是以括号开头, 但不包含括号. (?=\)) 就是以括号结尾 \S 匹配任何非空白字符.等价于[^ \f\n\r\t\v].+表示至少有一个字符. (?<=\()\S+(?=\))  就是匹配以 (开头, )结尾的括号里面最少有一个非空白字符的串, 但不包括开头的(和结尾的)