ValidParentheses

Posted wuliang-cola

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ValidParentheses相关的知识,希望对你有一定的参考价值。

  

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

有效字符串需满足:

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

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

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

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

示例 5:

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

解题思路:一开始想的比较简单,想在数组开头a[0]和数组结尾a[‘‘],作比较,如果头和尾相同,就判断为True,结果发现出错了,后来看下,是写一个栈就可以,碰到(,{,[,就入栈,遇到),},],就出栈,如果匹配则是True,如果不匹配或栈内还有其他元素,则是False。
 1 bool isValid(char* s){
 2     int len =  strlen(s);
 3     if(len%2) return false;
 4     
 5     int limit = len/2;
 6     char *stack = malloc(limit);
 7     int idx = 0;
 8     
 9     for(int i = 0; i<len; i++){
10         char cur = s[i];
11         if(cur == ( || cur=={ || cur ==[){
12             if(idx == limit) return false;
13             stack[idx++] = cur;
14         }
15         else
16         {
17             if(idx == 0) return false;
18             if(cur == } && stack[idx-1] == { || cur == ] && stack[idx-1] == [ || cur == ) && stack[idx-1] == (){
19                 idx--;                
20             }
21             else
22             {
23                 return false;
24             }
25         }
26     }
27     free(stack);
28     return idx == 0;
29 }

 



以上是关于ValidParentheses的主要内容,如果未能解决你的问题,请参考以下文章

LongestValidParentheses, 求最长合法括号子串长度-----同类问题ValidParentheses,GenerateParentheses

LeetCode 20. Valid Parentheses

20. Valid Parentheses做题报告

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

五个实用的Python案例题,非常有用!