[C语言][LeetCode][20]Valid Parentheses
来源:互联网 发布:四轴飞行器仿真软件 编辑:程序博客网 时间:2024/04/29 17:12
题目
Valid Parentheses
Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
标签
Stack、String
难度
简单
分析
题目意思是给定一个字符串,仅包含’(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’,确定字符串是否有效。
实现思路是利用栈,遍历字符串,如果遇到’(‘, ‘{‘, ‘[‘,则入栈 ,如果遇到’)’, ‘}’, ‘]’,则比较栈顶元素,如果是对应的字符,则出栈,否则返回false
C代码实现
typedef char ElemType;typedef struct STACK_T { ElemType value; struct STACK_T * next;}STACK;typedef struct STACK_T NODE;STACK * stack = NULL;STACK * stack_init(void){ STACK * stack = (STACK *)malloc(sizeof(STACK)); if(!stack) { printf("malloc stack fail\n"); return NULL; } memset(stack, 0, sizeof(STACK)); stack->next = NULL; return stack;}bool stack_is_empty(STACK * stack){ return (stack->next == NULL);}ElemType stack_pop(STACK * stack){ ElemType retValue; STACK * temp = NULL; if(!stack_is_empty(stack)) { temp = stack->next; stack->next = stack->next->next; retValue = temp->value; free(temp); } else { printf("stack is empty\n"); return 0; } return retValue;}int stack_push(STACK * stack, ElemType ele){ NODE * node = (NODE *)malloc(sizeof(NODE)); //memcpy(&node->Element, ele, sizeof(ElemType)); node->value = ele; node->next = stack->next; stack->next = node; return 0;}ElemType stack_top(STACK * stack){ if(!stack_is_empty(stack)) { return stack->next->value; } return (ElemType)(-1);}bool isValid(char* s) { char * p = s; if(!p) return false; if(*(p+1) == '\0') return false; stack = stack_init(); while(*p != '\0') { if( (*p == '(') ||(*p == '{') || (*p == '[') ) stack_push(stack, *p); else if(*p == ')') { if('(' != stack_top(stack)) return false; else stack_pop(stack); } else if(*p == '}') { if('{' != stack_top(stack)) return false; else stack_pop(stack); } else if(*p == ']') { if('[' != stack_top(stack)) return false; else stack_pop(stack); } else return false; p = p + 1; } if(true == stack_is_empty(stack)) return true; else return false;}
0 0
- [C语言][LeetCode][20]Valid Parentheses
- [C语言][LeetCode][20]Valid Parentheses
- Leetcode c语言-Valid Parentheses
- 【leetcode c++】 20 Valid Parentheses
- LeetCode 20: Valid Parentheses
- LeetCode(20) Valid Parentheses
- leetcode 20 Valid Parentheses
- Leetcode【20】:Valid Parentheses
- leetcode 20-Valid Parentheses
- [leetcode 20] Valid Parentheses
- [Leetcode] 20 - Valid Parentheses
- LeetCode | #20 Valid Parentheses
- leetcode.20-----------Valid Parentheses
- [leetcode] 20 Valid Parentheses
- leetcode-20 Valid Parentheses
- leetCode #20 Valid Parentheses
- leetcode 20 Valid Parentheses
- Leetcode 20 Valid Parentheses
- 21、访问者模式(Visitor)
- 搭建python2.7环境、python与eclipse配置、以及安装Flask框架,建立web项目
- php跨域问题
- Xposed初体验
- VI命令使用大全
- [C语言][LeetCode][20]Valid Parentheses
- Android学习篇:适配器简单介绍
- C++动态分配指针数组
- android定义圆形按钮Shape,选中改变颜色
- 写进程内存
- Java @Deprecated
- faac移植
- webpack使用教程(一)
- JAVA基础训练50道(修订版)