• 20. Valid Parentheses


    bool isValid(char* s)
    {
        int length = 0;
        int i = 0;
        int index = 0;
        length = strlen(s);
        printf("length = %d",length);
        if(length == 0)
        {
            return true;
        }
        //如果length为单数,直接返回false
        if(length % 2 == 1)
        {
            return false;
        }
        char stack[length];
        //比较
        for(i = 0;i < length;i ++)
        {
            switch (s[i])
            {
            case ')':
                if((index == 0) || stack[index-1] != '(')
                {
                    return false;
                }
                index--;
                break;
            case '}':
                if((index == 0) || stack[index-1] != '{')
                {
                    return false;
                }
                index--;
                break;
            case ']':
                if((index == 0) || stack[index-1] != '[')
                {
                    return false;
                }
                index--;
                break;
            default:
                stack[index] = s[i];
                index++;
            }
        }
        if(index <= 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    
    }
    

    提交了好多次,终于通过。
    参考的思路:
    数据结构——括号问题是经典的栈问题。因为这有三种括号,三个之间的嵌套比较复杂,所以不能简单地使用整形int作为判断(左括号++,右括号--),例如“([)]”这要是使用int那么就会判断正确。
    算法——利用一个栈,如果是左括号则直接放入,如果是右括号,pop栈顶看是否为对应左括号,否则return false;最后检查栈是否为空。
    反思:
    1 栈的实现,只需要一个一维数组和一个指向栈顶的变量top,这是栈的两个重要元素。
    2 栈可以用来进行验证括号的匹配,验证回文字。
    3 判断栈内有没有元素时,一定要注意在自己的程序中top=0为空,还是top<0为空。
    4 入栈时,不要忘记top++,出栈时不要忘记top--。

    参考资料
    1 https://www.cnblogs.com/Xieyang-blog/p/8908748.html

  • 相关阅读:
    node.js 笔记一
    mysql 错误2203 1061 及安装最后出现2003现象的解决办法
    git shell 命令大全
    Mysql常用命令行大全
    php 魔术方法 说明
    php linux 环境搭建
    Linux下源码编译安装MySQL 5.5.8
    linux 压缩解压缩命令
    ftp 命令全集
    sublime text2
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/10484079.html
Copyright © 2020-2023  润新知