| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 黎羽轩 于 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[n]; 
 
 -     int top = 0;
 
  
-     //把s中的数据判断是否可以入栈
 
 -     for(int i = 0;i<n;i++)
 
 -     {
 
 -         char ch = s[i]; //将数据存入ch数组
 
 -     if(ch == '(' || ch == '[' || ch=='{')
 
 -     {
 
 -         //满足括号左半边的入栈
 
 -         stack[top++] = ch;
 
 -     }
 
 -     else
 
 -     {
 
 -         char ch1 = 'u';
 
 -         if(top > 0)
 
 -         {
 
 -             //
 
 -             ch1 = stack[top-1]; 
 
 -         }
 
 -         if( (top > 0) && 
 
 -         (ch1 == '(' && ch == ')') ||
 
 -          (ch1 == '[' && ch ==']') ||
 
 -           (ch1 =='{' && ch == '}') 
 
 -           )
 
 -         {
 
 -             //出栈
 
 -             top--;
 
 -         }
 
 -         else
 
 -         {
 
 -             return false;
 
 -         }
 
 -     }
 
 -     }
 
 -     //判空
 
 -     if(top == 0)
 
 -     {
 
 -         return true;//完成
 
 -     }
 
 -     else
 
 -     {
 
 -         return false;
 
 -     }
 
 - }
 
 
  复制代码 
 
 |   
 
 
 
 |