2010-01-05 69 views
4

我有很多的文件被命名爲不良我怎樣才能將單詞粘在一起?

videoofmegoingtoschool.avi 

是有圖書館或某種算法,在那裏,將它正確地分開?

video of me going to school.avi 
+0

你一定是誰沒有采用的空格*輝煌*想法在文件名中的少數人之一。 – pavium 2010-01-05 04:50:29

+2

pavium:我個人用以下形式表示我的文件名:'silkys最終的前沿video.avi'。 (*在他熱鬧的笑話*咯咯笑)*。 – 2010-01-05 04:58:31

+0

我實際上並不喜歡*文件名中的空格,但我承認這是他們本來有用的一次。 – pavium 2010-01-05 05:20:34

回答

0

我懷疑沒有。這甚至是一個有趣的問題需要解決,因爲你必須確定最可能的分裂方式,在某些點分裂將影響未來的分裂。一個有趣的項目的人在他們的業餘時間,但在現實世界中,你需要做手工:)

3

我不認爲有什麼在那裏。我可以設想一個程序,該程序使用單詞詞典並選擇從左到右匹配的最短單詞,然後如果它找不到第二個單詞,則會失敗返回搜索下一個最大的單詞,等等。 (必要時回溯)然而,這可能會帶來誤報和否定。聽起來像一個有趣的問題來解決!

+0

如果說問題解決,應該在一個不錯的抽象的方式進行,使我們有一個API用,如果我們想做些什麼工作除了解析文件名。 – 2010-01-05 05:05:43

0

假設你有一個字典,和t(STR)意味着str是一個有效的字或詞的組,
噸(STR)= sum_over_i(噸(STR [0,1])& &噸(STR [I + 1,長度])
即,檢查一個groupofwords形成的第一個字母之後的有效組的字,添加一個空格,看看是否仍可以形成具有兩個半部的話;如果沒有按」將不起作用,嘗試第二個字母,那麼之後的第三...

與動態規劃,這可以在O完成(N^2)時間!

[編輯]人不立我的回答。也許一些僞代碼。

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 

這裏,如果有方法將字符串分解爲單個有效的單詞,則IsValidString返回true,否則返回false。不難看出,如何跟蹤哪些值(空間佈局)使字符串有效。

+0

如果str是一個字母長的,而不是「A」或「我」噢噸(STR)立即真如果str在字典中,假 – 2010-01-05 05:01:02

0

在Linux中,你可以有: 在/ usr /共享/字典/美式英語


您可以嘗試一次創建一個單詞(從左側開始),然後查看它是否作爲整體存在於該dict文件中。然後將該標記另存爲一個單詞。