我想合并相似的字符串(单词)(字符串在其他字符串中)。在
word
wor
words
wormhole
hole
会使:
^{pr2}$由于wor
与:word
,words
,wormhole
-wor
重叠;word
与以下内容重叠:words
-word
被丢弃;hole
与以下内容重叠:wormhole
-hole
被丢弃;
但是words
,wormhole
没有重叠,所以它们会保留下来。
我该怎么做?在
编辑
我的解决方案是:
while read a
do
grep $a FILE |
awk 'length > m { m = length; a = $0 } END { print a }'
done < FILE |
sort -u
但我不知道它是否会给大数据集带来麻烦。在
有了足够长的单词列表,单词上的任何嵌套循环都将非常缓慢。我就是这样做的:
也许可以通过Darshan Computing提出的从最长到最短处理单词的建议加以改进。在
在Ruby中:
在我看来,把单词从最长到最短排序,我们就可以一步一步地浏览排序后的列表一次,只与保留的单词匹配。我不擅长算法分析,但这对我来说是有意义的,我认为性能会很好。它似乎也起作用,假设保留单词的顺序无关紧要:
如果保留单词的顺序很重要,那么很容易修改这个来解释这个问题。一种选择就是:
^{pr2}$相关问题 更多 >
编程相关推荐