黎羽轩 发表于 2022-7-24 09:45:59

LeetCode括号匹配

本帖最后由 黎羽轩 于 2022-7-24 09:47 编辑

题目

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

有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:
输入:s = "()"
输出:true

示例 2:
输入:s = "()[]{}"
输出:true

示例 3:
输入:s = "(]"
输出:false

示例 4:
输入:s = "([)]"
输出:false

示例 5:
输入:s = "{[]}"
输出:true
 
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-parentheses


解题

bool isValid(char * s){

    int n = strlen(s); //计算字符串长度

   //定义一个栈并初始化
    char stack;
    int top = 0;

    //把s中的数据判断是否可以入栈
    for(int i = 0;i<n;i++)
    {
      char ch = s; //将数据存入ch数组
    if(ch == '(' || ch == '[' || ch=='{')
    {
      //满足括号左半边的入栈
      stack = ch;
    }
    else
    {
      char ch1 = 'u';
      if(top > 0)
      {
            //
            ch1 = stack;
      }
      if( (top > 0) &&
      (ch1 == '(' && ch == ')') ||
         (ch1 == '[' && ch ==']') ||
          (ch1 =='{' && ch == '}')
          )
      {
            //出栈
            top--;
      }
      else
      {
            return false;
      }
    }
    }
    //判空
    if(top == 0)
    {
      return true;//完成
    }
    else
    {
      return false;
    }
}


页: [1]
查看完整版本: LeetCode括号匹配