您的位置 首页 > 腾讯云社区

LeetCode题组:第20题-有效的括号---明天依旧可好

1.题目:回文数

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

有效字符串需满足:

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

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

示例 1:

输入: “()” 输出: true

示例 2:

输入: “()[]{}” 输出: true

示例 3:

输入: “(]” 输出: false

示例 4:

输入: “([)]” 输出: false

示例 5:

输入: “{[]}” 输出: true

2.我的解答: 我为了复习栈的相关知识,写了栈的详细操作,可以简化很多代码的。

#include<stdio.h> #include<string.h> //定义结构体 typedef struct SqStack{ char data[10000]; int top; }SqStack; //初始化栈 void initStack(SqStack *stack){ stack->top = 1; } //判断栈是否为空 bool isStackEmpty(SqStack *stack){ if(stack->top==-1){ return true; }else{ return false; } } //入栈 void EnStack(SqStack *stack,char q){ stack->data[++stack->top]=q; } //出栈 int DeStack(SqStack *stack,char q){ if(stack->top==-1)return 0; if(stack->data[stack->top]==q){ stack->top--; return 1; }else{ return 0; } } int isValid(char * s){ //定义一个标志遍历 int flag = 1; SqStack stack; initStack(&stack); for(int i=0;i<strlen(s);i++){ switch(s[i]){ case '(' : EnStack(&stack,'('); break; case '[' : EnStack(&stack,'['); break; case '{' : EnStack(&stack,'{'); break; case ')' : flag=DeStack(&stack,'('); break; case ']' : flag=DeStack(&stack,'['); break; case '}' : flag=DeStack(&stack,'{'); break; } if(flag==0) return 0; //括号不匹配,返回0; } if(isStackEmpty(&stack)) return 1; return 0; } int main(){ char *str = "([werw])"; printf("%d",isValid(str)); return 0; } ---来自腾讯云社区的---明天依旧可好

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: