【发布时间】:2011-07-15 17:01:03
【问题描述】:
我需要找到一个动态规划算法来解决这个问题。我试过但无法弄清楚。问题来了:
给你一个包含 n 个字符的字符串 s[1...n],你认为它是一个损坏的文本文档,其中所有标点符号都消失了(因此它看起来像“itwasthebestoftimes...”)。您希望使用字典重建文档,该字典以布尔函数 dict(*) 的形式提供,这样对于任何字符串 w,如果 w 是有效单词,dict(w) 的值为 1,并且值为 0否则。
- 给出一个动态规划算法来确定字符串 s[*] 是否可以被重构为一个有效的单词序列。假设每次调用dict都需要单位时间,运行时间最多应该是O(n^2)。
- 如果字符串有效,则让您的算法输出相应的单词序列。
【问题讨论】:
-
嗯,这是教科书上的练习。我没有练习的解决方案,也不知道如何解决这个问题。
-
首先想到的就是模棱两可。假设您的字典中有单词“was”、“her”和“washer”。不过,您可以只选择最短的单词。等等,不...您可以从单词中删除部分并使字符串无效-例如从“自动”中捕获“自动”。
-
您是否尝试先搜索答案?在 SO - stackoverflow.com/questions/4755157/split-string-into-words、stackoverflow.com/questions/3553958/…、stackoverflow.com/questions/3466972/… 上已经有几个关于这个问题的问题。其中一些提到了动态编程解决方案。
标签: algorithm dynamic big-o text-segmentation