s*****l 发帖数: 45 | 1 在一个字典里面,有些词是由这个字典内的其他词组成的,称之为复合词,如何获得这
个字典的最长复合单词??
bow// |
B*****t 发帖数: 335 | 2 你的最长复合词是指这个单词的长度最长还是这个单词含有其他单词的个数最多?
我想你应该是指后者吧。
【在 s*****l 的大作中提到】 : 在一个字典里面,有些词是由这个字典内的其他词组成的,称之为复合词,如何获得这 : 个字典的最长复合单词?? : bow//
|
w******1 发帖数: 520 | |
s*****l 发帖数: 45 | 4 如果指的是前者呢。。。
如何知道一个词是其他词的组合呢?
【在 B*****t 的大作中提到】 : 你的最长复合词是指这个单词的长度最长还是这个单词含有其他单词的个数最多? : 我想你应该是指后者吧。
|
B*****t 发帖数: 335 | 5 如果是指的前者,可以建立一种数据结构,存储每个词的起始字母,长度,Robin-Carp
值。
这样可以按照词的长度先拍个序,二分查找符合条件的单词(也可以从最长的单词找起
,这样就不用排序了,搞个hash就可以了,不过感觉二分的方法统计意义上更优,而且
省空间)。每当二分到某一个词时,进行DFS或者BFS(DFS要好一些)比较Robin-Carp的
值。
如此继续,直到找到一个最大的为止。
【在 s*****l 的大作中提到】 : 如果指的是前者呢。。。 : 如何知道一个词是其他词的组合呢?
|
x***y 发帖数: 633 | 6 Build a trie, and marked the end of each word. To verify whether a word W is
a combined word, do the following
bool verifyComineWord(word W)
{ \\Assume the length of the word in trie is n
for every position i(except n) marked in the path of the word W
if (W[i+1:n] is a word || verifCombineWord(W[i+1:n]))
return true;
return false;
}
Then,we can record the longest word up to now and find the result we want. Of courese, if we start from the longest word, maybe it will take
【在 s*****l 的大作中提到】 : 在一个字典里面,有些词是由这个字典内的其他词组成的,称之为复合词,如何获得这 : 个字典的最长复合单词?? : bow//
|