package main
import (
"fmt"
)
func isInDict(word string, dict []string) bool {
for _, w := range dict {
if w == word {
return true
}
}
return false
}
func wordBreak(str string, result string, dict []string) {
strsize := len(str)
for i := 1; i <= strsize; i++ {
subStr := str[:i]
if isInDict(subStr, dict) {
if i == strsize {
result += subStr
fmt.Println(result)
return
}
wordBreak(str[i:], result+subStr+" ", dict)
}
}
}
func main() {
str := "butterflyplaybasketballwithbags"
dict := []string{
"butterfly", "basketball", "bagpiper", "and", "play",
"with", "butter", "fly", "basket", "ball", "bags",
}
wordBreak(str, "", dict)
}
/*
run:
butter fly play basket ball with bags
butter fly play basketball with bags
butterfly play basket ball with bags
butterfly play basketball with bags
*/