dengxinyi 6 tahun lalu
induk
melakukan
97431200aa
2 mengubah file dengan 63 tambahan dan 0 penghapusan
  1. 46 0
      hard/140.go
  2. 17 0
      hard/145.go

+ 46 - 0
hard/140.go

@@ -0,0 +1,46 @@
+package main
+
+import (
+	"strings"
+)
+
+func wordBreak(s string, wordDict []string) []string {
+	resMap := make(map[string][]string)
+	return wordBreakDFS(s, wordDict, &resMap)
+}
+
+func wordBreakDFS(s string, wordDict []string, resMap *map[string][]string) []string {
+	if _, ok := (*resMap)[s]; ok { // DFS solution is very pratical! Try to remember
+		return (*resMap)[s]
+	} // Use a map to limit the search
+	if len(s) == 0 {
+		return []string{""}
+	}
+	res := make([]string, 0)
+	for i := range wordDict {
+		if strings.HasPrefix(s, wordDict[i]) {
+			sublist := wordBreakDFS(s[len(wordDict[i]):], wordDict, resMap)
+			for j := range sublist {
+				var suffix string
+				if sublist[j] != "" {
+					suffix = " " + sublist[j]
+				}
+				res = append(res, wordDict[i]+suffix)
+			}
+		}
+	}
+	(*resMap)[s] = res
+	return res
+}
+
+// func main() {
+// 	fmt.Println(wordBreak(
+// 		"catsanddog",
+// 		[]string{"cat", "cats", "and", "sand", "dog"}))
+// 	fmt.Println(wordBreak(
+// 		"pineapplepenapple",
+// 		[]string{"apple", "pen", "applepen", "pine", "pineapple"}))
+// 	fmt.Println(wordBreak(
+// 		"catsandog",
+// 		[]string{"cats", "dog", "sand", "and", "cat"}))
+// }

+ 17 - 0
hard/145.go

@@ -0,0 +1,17 @@
+package main
+
+/**
+ * Definition for a binary tree node.
+ * type TreeNode struct {
+ *     Val int
+ *     Left *TreeNode
+ *     Right *TreeNode
+ * }
+ */
+func postorderTraversal(root *TreeNode) []int {
+	return []int{}
+}
+
+func main() {
+
+}