【发布时间】:2011-04-03 00:13:14
【问题描述】:
假设您有一本包含有效单词的字典。
给定一个删除所有空格的输入字符串,确定该字符串是否由有效单词组成。
您可以假设字典是提供 O(1) 查找的哈希表。
Some examples:
helloworld-> hello world (valid)
isitniceinhere-> is it nice in here (valid)
zxyy-> invalid
如果一个字符串有多种可能的解析方式,只要返回true就足够了。
字符串可以很长。因此,请考虑一种既节省空间又节省时间的算法。
【问题讨论】:
-
这可以通过动态规划在二次时间内完成,参见here。
-
这对于给定的字典数据结构是最佳的,因为我们可以有子字符串 [0..i] 用于 i=1..N/2-1 匹配,以及子字符串 [i..N -1] 对于 i=N/2..N-2 匹配。
-
啊,有趣。我认为可能有一种方法可以通过以某种方式避免重新计算(考虑到 CYK 和所有的存在)来获得比我直接递归方法更好的最坏情况界限,但无法完全弄清楚如何做到这一点。