object WordBreaker {
def isInDict(word: String, dict: List[String]): Boolean = {
dict.contains(word)
}
def wordBreak(str: String, result: String, dict: List[String]): Unit = {
val strsize = str.length
for (i <- 1 to strsize) {
val subStr = str.substring(0, i)
if (isInDict(subStr, dict)) {
if (i == strsize) {
println(result + subStr)
return
}
wordBreak(str.substring(i), result + subStr + " ", dict)
}
}
}
def main(args: Array[String]): Unit = {
val str = "butterflyplaybasketballwithbags"
val dict = List(
"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
*/