Skip to content

Commit 92d043b

Browse files
authored
Merge pull request #4 from openset/patch-2
Update: valid_parentheses
2 parents 0e12245 + 230388b commit 92d043b

File tree

1 file changed

+22
-45
lines changed

1 file changed

+22
-45
lines changed
+22-45
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,26 @@
11
package valid_parentheses
22

33
funcisValid(sstring) bool {
4-
iflen(s)%2!=0 {
5-
returnfalse
6-
}
7-
left:=map[byte]struct{}{
8-
'(': struct{}{},
9-
'[': struct{}{},
10-
'{': struct{}{},
11-
}
12-
right:=map[byte]struct{}{
13-
')': struct{}{},
14-
']': struct{}{},
15-
'}': struct{}{},
16-
}
17-
bytes:= []byte(s)
18-
stack:= []byte{}
19-
fori:=rangebytes {
20-
if_, ok:=left[bytes[i]]; ok {
21-
stack=append(stack, bytes[i])
22-
} elseif_, ok=right[bytes[i]]; ok {
23-
iflen(stack) ==0 {
24-
returnfalse
25-
}
26-
switchstack[len(stack)-1] {
27-
case'(':
28-
ifbytes[i] !=')' {
29-
returnfalse
30-
}
31-
case'[':
32-
ifbytes[i] !=']' {
33-
returnfalse
34-
}
35-
case'{':
36-
ifbytes[i] !='}' {
37-
returnfalse
38-
}
39-
}
40-
stack=stack[:len(stack)-1]
41-
} else {
42-
returnfalse
43-
}
44-
}
45-
iflen(stack) ==0 {
46-
returntrue
47-
}
48-
returnfalse
4+
m:=map[rune]rune{
5+
'(': ')',
6+
'[': ']',
7+
'{': '}',
8+
}
9+
stack:=make([]rune, len(s))
10+
top:=0
11+
for_, c:=ranges {
12+
switchc {
13+
case'(', '[', '{':
14+
stack[top] =m[c]
15+
top++
16+
case')', ']', '}':
17+
iftop>0&&stack[top-1] ==c {
18+
top--
19+
} else {
20+
returnfalse
21+
}
22+
}
23+
}
24+
25+
returntop==0
4926
}

0 commit comments

Comments
 (0)
close