반응형
Problem
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
1. Open brackets must be closed by the same type of brackets.
2. Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()" Output: true
Example 2:
Input: "()[]{}" Output: true
Example 3:
Input: "(]" Output: false
Example 4:
Input: "([)]" Output: false
Example 5:
Input: "{[]}" Output: true
Solution
스택을 이용해서 쉽게 풀 수 있는 기초 문제.
•string의 길이가 0이면 True.
•string의 길이가 1이면 False.
•string의 길이만큼 반복.
1. 스택의 가장 위에 있는 글자와 현재 글자를 합친 것이 dictionary 에 있다면
- 스택의 가장 위에 있는 노드를 제거.
2. 그렇지 않다면
- 스택에 현재 글자 추가
•스택에 글자가 하나라도 남아 있을 경우 False 반환 그렇지 않다면 True 반환.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class Solution: def isValid(self, s): """ :type s: str :rtype: bool """ dic = [ "()", "{}", "[]" ] n = len(s) if n < 1 : return True elif n == 1 : return False stack = [] for i in s : if len(stack) > 0 and stack[-1]+i in dic : stack.pop() else : stack.append(i) if len(stack) > 0 : return False return True | cs |
Source
반응형
'0 > algorithm' 카테고리의 다른 글
Swap Nodes in Pairs (in Python) (0) | 2019.01.21 |
---|---|
Generate Parentheses (in Python) (0) | 2019.01.21 |
Remove Node From End of List (in Python) (0) | 2019.01.21 |
Letter Combinations of a Phone Number (in Python) (0) | 2019.01.20 |
3Sum (in Python) (2) | 2019.01.20 |