美文网首页
判断括号匹配问题

判断括号匹配问题

作者: lidedongsn | 来源:发表于2018-03-29 16:26 被阅读4次

问题描述

给定一个字符串,其中的字符包含任意字符包括三种括号:花括号{ }、中括号[ ]、圆括号( )。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如 “{ [ ] ( ) }” 或 “[ ( { } [ ] ) ]” 等为正确的格式,而 “[ ( ] )” 或 “{ [ ( ) }” 或 “( { } ] )” 均为不正确的格式。

c++版本

#include <iostream>
#include <stack>
#include <string.h>

bool is_left(char c) {
    if (c == '(' || c == '{' || c == '[') {
        return true;
    } 

    return false;
}

bool is_right(char c) {
    if (c == ')' || c == '}' || c == ']') {
        return true;
    } 

    return false;
}

bool is_match(char left, char right) {
    if (right == ')') {
        return left == '(';
    }
    if (right == '}') {
        return left == '{';
    }
    if (right == ']') {
        return left == '[';
    }

    return false;
}

bool is_brackets_match(char *s) {
    std::stack<char> ch;
    while(*s != '\0') {
        if(is_left(*s)) {
            ch.push(*s);
        }else if (is_right(*s)) {
            if(ch.empty()) {
                return false;
            }
            if (!is_match(ch.top(), *s)) {
                return false;
            }
            ch.pop();
        }

        s++;
    }

    if (ch.empty()) {
        return true;
    }

    return false;
}


int main() {

    char *p  = "{{test]()}";
    //char *p  = "{([test])}";
    if (is_brackets_match(p)) {
        std::cout << "brackets is matched!" << std::endl;
    }else {
        std::cout << "brackets is not matched!" << std::endl;
    }
    return 0;
}



相关文章

  • 判断括号匹配问题

    问题描述 给定一个字符串,其中的字符包含任意字符包括三种括号:花括号{ }、中括号[ ]、圆括号( )。设计算法,...

  • 栈、队列解决问题

    栈解决括号匹配问题 一个字符串中包含小括号、中括号、大括号,判断该字符串中的括号是否匹配 ()()[]{} 匹配...

  • 3. 一些算法问题

    1. 括号匹配问题 算法:括号匹配问题 - 简书 C程序括号匹配检查 - Jason ZHANG的博客 - CSD...

  • Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目判断一个文本中的括号是否闭合,如: text = "({[({{abc}})...

  • 算法---括号匹配

    给一个括号字符串序列,判断所有的括号是否匹配

  • Python实现栈及其示例

    StackImple.py symbolMatchTest.py(判断括号是否匹配)

  • 括号匹配问题

    这个问题的描述很简单,就是若括号匹配则返回true,否则返回false。 Given a string conta...

  • 括号匹配问题

    问题描述 有效字符串需满足: 左括号必须用相同类型的右括号闭合。包括:“( )”,“[ ]”,“{ }”。左括号必...

  • 20. Valid Parentheses

    使用栈数据结构: 遇到左括号,需要压栈。 遇到右括号,判断栈顶是否和当前右括号匹配;若不匹配则返回false,否则...

  • 2022-01-07 1614. 括号的最大嵌套深度

    之前做过类似的括号匹配题目。左括号+1,右括号-1,判断出现时的最大值。java版本

网友评论

      本文标题:判断括号匹配问题

      本文链接:https://www.haomeiwen.com/subject/uavmcftx.html