|
@@ -0,0 +1,65 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "container/list"
|
|
|
+ "fmt"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+ var str string
|
|
|
+
|
|
|
+ str = "("
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "()"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "()[]{}"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "(]"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "([)]"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "{[]}"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "]{[]}"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+
|
|
|
+ str = "{[]}}"
|
|
|
+ fmt.Println(isValid(str))
|
|
|
+}
|
|
|
+
|
|
|
+func isValid(s string) bool {
|
|
|
+ var res bool = true
|
|
|
+ var stack = list.List{}
|
|
|
+ var str, element string
|
|
|
+ for i := 0; i < len(s); i++ {
|
|
|
+ str = s[i : i+1]
|
|
|
+ element = ""
|
|
|
+ if stack.Back() != nil {
|
|
|
+ element, _ = stack.Back().Value.(string)
|
|
|
+ }
|
|
|
+ if element == "" || element == "(" || element == "[" || element == "{" {
|
|
|
+ if str == "(" || str == "[" || str == "{" {
|
|
|
+ stack.PushBack(str)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ combine := element + str
|
|
|
+ if combine == "()" || combine == "[]" || combine == "{}" {
|
|
|
+ stack.Remove(stack.Back())
|
|
|
+ } else {
|
|
|
+ res = false
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if stack.Len() != 0 {
|
|
|
+ res = false
|
|
|
+ }
|
|
|
+ return res
|
|
|
+}
|