• 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 }
  • 相关阅读:
    1.7 All components require plug-in?
    1.6 Why only in China?
    1.5 A better alternative thing: React Native
    1.4 The usage of plug-in
    1.3 History of Android Plug-in Programing
    SQL Server 查询请求
    matplotlib 绘图的核心原理
    数据加密 第六篇:透明文件加密
    数据加密 第五篇:非对称密钥
    SSIS 数据类型 第二篇:变量的数据类型
  • 原文地址:https://www.cnblogs.com/woju/p/12804974.html
Copyright © 2020-2023  润新知