擅长:python、mysql、java
<p>对于一般的单词,判断它是否是复合词的最简单的方法就是将它切成两半,看看这两半是否都是单词。您必须使用不同的切分点重复测试,因此运行时间与单词的长度成正比。对于任何英语单词,它都应该相当快,而不是<a href="http://en.wikipedia.org/wiki/Titin#Linguistic_significance" rel="nofollow">189,000 character long chemical names</a>。在</p>
<pre><code>words = ['road', 'roadwork', 'pill', 'pillbox', 'pillow', 'ball', 'football', 'basketball', 'work', 'box', 'foot', 'basket']
wordSet = set(words)
def isWord(w):
return w in wordSet
def isCompoundWord(word):
for idx in range(1, len(word)):
left = word[:idx]
right = word[idx:]
if isWord(left) and isWord(right):
return True
return False
nonCompoundWords = [word for word in words if not isCompoundWord(word)]
print nonCompoundWords
</code></pre>
<p>输出:</p>
^{pr2}$