-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpairs_stack.py
More file actions
95 lines (68 loc) · 1.92 KB
/
pairs_stack.py
File metadata and controls
95 lines (68 loc) · 1.92 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# -*- coding: utf-8 -*-
"""
Programa desarrollado por el Licenciado César Cordero Rodríguez.
Bajo licencia GPLv3.
Puede ser modificado, copiado y distribuido.
Se desarrolló con fines educativos.
"""
# Brackets balanced: In a string, the program will check the pair's balance of
# []{}(), and the correct order, using stacks.
import time
def pairs_stack(string, pairs = {'[': ']', '{': '}', '(': ')'}):
opening = pairs.keys()
closing = pairs.values()
match = list()
for s in string:
if s in opening:
match.insert(0, s)
elif s in closing:
if len(match) == 0:
return False
if match[0] == opening[closing.index(s)]:
match.pop(0)
else:
return False
if len(match) == 0:
return True
return False
millis = float(time.time() * 1000)
string = "[]{}()[][][]"
print "Should be true"
print str(pairs_stack(string))
string = "([()][][{}])"
print "Should be true"
print str(pairs_stack(string))
string = "[(])"
print "Should be false"
print str(pairs_stack(string))
string = "[([])()({})]"
print "Should be true"
print str(pairs_stack(string))
string = "[(,,),(,,[])]"
print "Should be true"
print str(pairs_stack(string))
string = "[(,,,(,,[])]"
print "Should be false"
print str(pairs_stack(string))
string = "]"
print "Should be false"
print str(pairs_stack(string))
string = "["
print "Should be false"
print str(pairs_stack(string))
string = "{[{}][][({})]}"
print "Should be true"
print str(pairs_stack(string))
string = """
public static void main(String args[])
{
System.out.println("Hello world");
}
"""
print "Should be true"
print str(pairs_stack(string))
string = "[[[((({{{}}})))]]]"
print "Should be true"
print str(pairs_stack(string))
millis = float(time.time() * 1000) - millis
print "Result " + str(millis)