【发布时间】:2016-05-20 10:27:07
【问题描述】:
我有一个任务,但我不确定我应该如何解决这个问题。我有一个想法,但我不知道这是否是解决它的最佳方法。
任务如下: 给定的是一段文本和一些要查找的关键字。我们需要找到一个可以找到所有单词并且使用最少单词的段落。只需要考虑 A-Z 和 a-z 中的字母。
这是一个例子:
文本块:
Ein toller Beispieltext ist der Blindtext。 Er hat ein paar Wörter。模具
ein Beispieltext, der ein paar Wörter hat und auch noch ein paar mehr, 嗯
死泽勒 etwas länger zu machen。 Darüber hinaus ist er nur dafür da, um
genügend Testtext zusammenzubekommen。 Dem Text selbst macht das nicht so
维尔澳大利亚Früher einmal mehr, als er noch nicht so selbstbewusst war。豪特
kennt er seine Rolle als Blindtext und fügt sich selbstbewusst ein。厄斯特
ja irgendwie wichtig。 Manchmal jedoch, ganz manchmal, weint er in der Nacht,
weil er niemals bis zum Ende gelesen wird。 Doch das hat ja jetzt zum Glück
恩恩德。
这里需要找到的话: 恩 明信片 德 帕尔 沃尔特
结果是 其他人的作品
以下段落也可以是所有单词都可以找到的段落,但段落内部的单词更多,因此不是解决方案: Ein toller Beispieltext ist Blindtext。 Er hat ein paar Wörter。
我的想法是剪掉所有不必要的字母,然后将文本块拆分为空格,以获得所有单词的数组。所以我可以得到单词的位置并计算在一个搜索词的第一次出现和所有其他搜索词的第一次出现之间有多少词。这样我就需要遍历整个数组并比较所有可能的段落长度,然后取最短的。
你认为这是最好的方法吗?或者你能告诉我一个更好的办法来解决这个问题吗?
【问题讨论】:
-
这是什么意思:“只需要考虑A-Z和a-z的字母。”是不是表示Wörter与作者?当一个单词只包含非 a-z 字母时会发生什么,比如法语
à?它们算为单词吗? -
是的,正如你所说的 wörter 会变得更写,因此“à”这个词会掉出来而不算是一个词。
-
如果您搜索的单词列表中有两次相同的单词会发生什么?应该忽略重复,还是应该匹配的短语也有两次?
-
应该忽略重复
标签: php arrays regex string search