nasıl ben kelimeleri birbirine yapışmış ayırabilirsiniz?

5 Cevap

Ben kötü adlı dosyaların bir şey var

videoofmegoingtoschool.avi

Düzgün ayıracaktır orada bir kütüphane ya da bazı algoritma var mı?

video of me going to school.avi

5 Cevap

Ben bir şey orada sanmıyorum. Ben kelimelik bir sözlük kullanır ve o yüzden üzerinde büyük bir sonraki sözcüğü aramak ve geri başarısız ikinci bir kelime bulamıyorum eğer sağ ve sol eşleşen kısa kelimeyi seçer bir program öngörülüyor. (Gerekirse geriye) Ancak bu yanlış pozitif ve negatif ile gelebilir. Mücadele için eğlenceli bir sorun gibi geliyor!

Bu SO, ne yazık ki I can only find one link şimdi burada daha önce birkaç kez tartışıldı.

EDIT - More Links:

Ben sanıyorum. Bölmek için en 'olası' bir şekilde belirlemeniz gerekir, ve bazı noktalarda yarma gelecek böler etkileyecektir çünkü, hatta çözmek için ilginç bir problem. Onların boş zamanlarında birisi için eğlenceli bir proje, ama gerçek dünyada, bunu elle yapmanız gerekir :)

In Linux you may have: /usr/share/dict/american-english


Bunu o dict dosyasında bir bütün olarak görme varsa o zaman, (soldan) bir defada bir sözcük 1 mektup oluşturmayı deneyebilirsiniz. Sonra ayrı bir kelime olarak bu belirteci kaydedin.

assuming you have a dictionary, and t(str) means that str is a valid word or group of words,
t(str) = sum_over_i(t(str[0,i]) && t(str[i+1, length])
that is, to check if a groupofwords forms a valid group-of-words, add a space after the first letter and see if you can still form words with both halves; if that doesn't work, try after the second letter, then the third...

dinamik programlama ile, bu O yapılabilir (n ^ 2) zamanı!

[Düzenle] İnsanlar benim cevap sevmiyorum. Belki bazı sözde kodu.

function IsValidString(x)
    if(x is one letter, not 'a' or 'i')
        return false
    if(x is a dictionary word)
        return true
    for i from 0 to x.length-2
        if( IsValidString(x[0,i]) and IsValidString(x[i+1, x.length-1]) )
            return true
    return false

Orada birey, geçerli kelimelerle dize kadar kırmak için bir yoldur, aksi takdirde false Burada, IsValidString true döndürür. Bu i (boşluk yerleştirme) değerleri dize geçerli yapılan takip nasıl görmek zor değildir.