【发布时间】:2019-05-21 14:18:33
【问题描述】:
我正在尝试输入一个字符串,比如一个句子,并找到句子中所有有反向词的词。到目前为止我有这个:
s = "Although he was stressed when he saw his desserts burnt, he managed to stop the pots from getting ruined"
def semordnilap(s):
s = s.lower()
b = "!@#$,"
for char in b:
s = s.replace(char,"")
s = s.split(' ')
dict = {}
index=0
for i in range(0,len(s)):
originalfirst = s[index]
sortedfirst = ''.join(sorted(str(s[index])))
for j in range(index+1,len(s)):
next = ''.join(sorted(str(s[j])))
if sortedfirst == next:
dict.update({originalfirst:s[j]})
index+=1
print (dict)
semordnilap(s)
所以这在大多数情况下都有效,但如果你运行它,你会看到它也将“he”和“he”配对为一个字谜,但这不是我想要的。关于如何修复它的任何建议,以及是否可以加快运行时间,如果我要输入一个大文本文件。
【问题讨论】:
-
您只是在寻找反转的字符串吗?在这种情况下,它就像为每个句子创建一个尊敬的单词列表然后进行查找一样简单。
-
这不是一个非常缓慢的过程吗?
-
不一定。标准库是用 C 实现的,至少在 CPython 中是这样。所以它通常比纯 python 代码更快。不过,您可以使用
timeit.timeit对其进行测量。对于更高级的用例,您可能应该使用nltk。
标签: python python-3.x string anagram