2010-01-05 66 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文件中。然后将该标记另存为一个单词。