fun isInDict(word: String, dict: List<String>): Boolean {
return dict.contains(word)
}
fun wordBreak(str: String, result: String, dict: List<String>) {
val strSize = str.length
for (i in 1..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)
}
}
}
fun main() {
val str = "butterflyplaybasketballwithbags"
val dict = listOf(
"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
*/