valid parentheses
来源:互联网 发布:设计app软件 编辑:程序博客网 时间:2024/06/05 19:52
使用栈来解决:
/*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.*/#include <stdio.h>#include <stdlib.h>#include <assert.h>#define STACK_TYPE chartypedef struct STACK_NODE {STACK_TYPE value;struct STACK_NODE *next;} StackNode;STACK_TYPE top(StackNode *stack_top);int is_empty(StackNode *stack);void push2(StackNode **stack_top,STACK_TYPE value);void pop2(StackNode **stack_top);int isValid(char* s) { StackNode *stack=NULL;char c;while(*s!='\0'){printf("%c\n",*s);switch(*s){case '(':case '[':case '{': push2(&stack,*s);break;case ')': if(is_empty(stack) || top(stack)!='('){//printf("top:%c\n",top(stack));return 0;} else pop2(&stack);break;case ']': if(is_empty(stack) || top(stack)!='['){//printf("top:%c\n",top(stack));return 0;} else pop2(&stack);break;case '}': if(is_empty(stack) || top(stack)!='{'){//printf("top:%c\n",top(stack));return 0;} else pop2(&stack);break;default:;}//printf("top:%c\n",top(stack));s++;}return is_empty(stack);}int main(int argc,char **argv){ char *s="([])[()"; printf("%d\n",isValid(s));return 0;}void push2(StackNode **stack_top,STACK_TYPE value){StackNode *new_node=(StackNode*)malloc(sizeof(StackNode));assert(new_node!=NULL);new_node->value=value;new_node->next=*stack_top;*stack_top=new_node;}void pop2(StackNode **stack_top){StackNode *first_node;//assert(!is_empty(*stack_top));first_node=*stack_top;*stack_top=first_node->next;free(first_node);}STACK_TYPE top(StackNode *stack_top){return (stack_top)->value;}int is_empty(StackNode *stack){return (stack)==NULL;}
python:
# -*- coding: utf-8 -*-'''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.'''class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ characters={')':'(',']':'[','}':'{'} stack=[] for c in s: if c in characters.values(): stack.append(c) elif c in characters.keys(): if stack==[] or characters[c]!=stack.pop(): return False else: return False return stack==[]mystack=Solution()s='[](){][}'print mystack.isValid(s)
阅读全文
0 0
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- Valid Parentheses
- CSS3 opacity 属性
- 图片边距消除的方法
- 获取元素CSS值之getComputedStyle方法
- Pyqt5-第一个程序
- HDU 2896 病毒侵袭(AC自动机)
- valid parentheses
- StringUtil工具类解析
- Linux常用命令
- RMQ算法(第一次遇见,忍不住转发)
- Java——对象和类
- POJ
- hdu1294(有多少种根数)树
- List 根据对象的属性自定义排序
- Java 网络编程