【发布时间】:2013-06-05 11:13:50
【问题描述】:
我想合并相似的字符串(单词)(字符串在其他字符串中)。
word
wor
words
wormhole
hole
会做:
words
wormhole
由于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
但不知道会不会对大数据集造成麻烦。
【问题讨论】:
-
你的问题是什么?
-
这很模糊。
-
这个具体的例子很容易解决:将所有单词的列表按升序排序。如果一个词是下一个词的子串,则丢弃当前词;否则继续。但是,这仅涵盖以彼此开头的单词。对于单词 A 包含单词 B 的一般解决方案,您可能必须采用二次方。
-
我编辑了我的问题。
-
@Poe 您可能应该删除 holes 以减少歧义。