Quellcode durchsuchen

add 'Valid Parentheses'

tangs vor 5 Jahren
Ursprung
Commit
462d483d5c
2 geänderte Dateien mit 111 neuen und 0 gelöschten Zeilen
  1. 65 0
      tags/string/validParentheses/main.go
  2. 46 0
      tags/string/validParentheses/main_optimize.go

+ 65 - 0
tags/string/validParentheses/main.go

@@ -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
+}

+ 46 - 0
tags/string/validParentheses/main_optimize.go

@@ -0,0 +1,46 @@
+package main
+
+import (
+	"fmt"
+	"strings"
+)
+
+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 {
+	for {
+		if !strings.Contains(s, "()") && !strings.Contains(s, "[]") && !strings.Contains(s, "{}") {
+			break
+		}
+		s = strings.Replace(s, "()", "", -1)
+		s = strings.Replace(s, "[]", "", -1)
+		s = strings.Replace(s, "{}", "", -1)
+	}
+	return s == ""
+}