fn is_in_dict(word: &str, dict: &[&str]) -> bool {
dict.iter().any(|&w| w == word)
}
fn word_break(str: &str, result: String, dict: &[&str]) {
let strsize = str.len();
for i in 1..=strsize {
let sub_str = &str[..i];
if is_in_dict(sub_str, dict) {
if i == strsize {
println!("{}{}", result, sub_str);
return;
}
word_break(&str[i..], format!("{}{} ", result, sub_str), dict);
}
}
}
fn main() {
let str = "butterflyplaybasketballwithbags";
let dict = [
"butterfly", "basketball", "bagpiper", "and", "play",
"with", "butter", "fly", "basket", "ball", "bags",
];
word_break(str, String::new(), &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
*/