zoukankan      html  css  js  c++  java
  • LeetCode 20. 有效的括号

    20. 有效的括号

    难度简单

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

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

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

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

    输入: "([)]"
    输出: false
    

    示例 5:

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

    思路:这道题可以用栈来解决,如果遇到左括号,入栈,遇到右括号,出栈,判断,匹配,继续,否则,错误,然后还有考虑特殊情况,第一个元素为右括号,获得的数据为空,获得的数据为奇数个,这些情况都应返回false。

     1 bool isValid(char * s){
     2     if(strlen(s)==0){
     3         return true;
     4     }
     5     if(strlen(s)%2==1){
     6         return false;
     7     }
     8     if(s[0]==']'||s[0]=='}'||s[0]==')'){
     9         return false;
    10     }
    11     int i,top=-1;
    12     char stack[strlen(s)];
    13     for(i=0;i<strlen(s);i++){
    14         if(s[i]=='['||s[i]=='{'||s[i]=='('){
    15             stack[++top]=s[i];
    16         }else if(s[i]==']'||s[i]=='}'||s[i]==')'){
    17             switch(s[i]){
    18                 case ']':
    19                     if(stack[top--]=='['){
    20                         break;
    21                     }else{
    22                         return false;
    23                     }
    24                 case '}':
    25                     if(stack[top--]=='{'){
    26                         break;
    27                     }else{
    28                         return false;
    29                     }
    30                 case ')':
    31                     if(stack[top--]=='('){
    32                         break;
    33                     }else{
    34                         return false;
    35                     }
    36             }
    37         }
    38     }
    39     if(top==-1){
    40         return true;
    41     }else{
    42         return false;
    43     }
    44 }
  • 相关阅读:
    博弈入门
    悼念512汶川大地震遇难同胞——老人是真饿了 hdu 2187
    数塔 简单的 动态规划
    ~~~~~~~~~~~析构函数~~~~~~~~
    构造函数的重载
    利用 构造函数 实现数据成员的 初始化
    类和对象
    函数 的 重载 和 函数 模版
    nexus Maven私服的相关配置
    docker-compose bug
  • 原文地址:https://www.cnblogs.com/woju/p/12804974.html
Copyright © 2011-2022 走看看