 Bir s dizisi ve bir kelime sözlüğü dict verildiğinde, s'nin bir veya daha fazla sözlük kelimesinden oluşan boşlukla ayrılmış bir diziye bölünüp bölünemeyeceğini belirleyin. Örneğin, giriş dizesi "leetcode" ise ve sözlük ["leet", "code"] ise, çıktı doğru olmalıdır.
Bu problem dinamik programlama ile çözülebilir. n+1 boyutunda bir dp[] dizisi oluşturabiliriz (burada n, s giriş dizisinin uzunluğudur), öyle ki, eğer s[0:i] alt dizisi boşlukla ayrılmış sözcüklere bölünebiliyorsa, dp[i] doğru olur, Aksi takdirde yanlış. Tüm olası alt dizileri yinelemek için iç içe bir döngü kullanabiliriz ve her bir alt dize için sözlükten bir kelimeyi önceden bölümlere ayrılmış bir alt dizeyle birleştirerek oluşturulup oluşturulamayacağını kontrol edebiliriz. Böyle bir segment bulunursa, dp[i]'yi true olarak ayarlayabilir ve bir sonraki iterasyona devam edebiliriz. Dizideki son eleman olan dp[n]'yi hesapladıktan sonra, değerini nihai sonuç olarak döndürebiliriz. İşte kod: ``` def word_break(s, word_dict): n = len(s) dp = [False] * (n+1) dp[0] = i için true(1, n+1) aralığında : for j in range(i): if dp[j] ve s[j:i] in word_dict: dp[i] = True break return dp[n] ``` dp[0] = True ile başlıyoruz çünkü bir boş dizi her zaman oluşturulabilir. Daha sonra tüm s[0:i] alt dizilerini yineleriz ve sözlükte s[j:i] = w + s[0:j] olacak şekilde bir w sözcüğü bulmaya çalışırız, burada 0 <= j <= i-1 . Eğer böyle bir kelime bulunursa dp[i] değerini True yaparak bir sonraki iterasyona geçiyoruz. Yineleme tamamlandığında, nihai sonuç olarak dp[n] değerini döndürürüz.