我遇到了问题解决方案的多个链接 - "如何检查字符串是否是两个其他字符串的交错"
对我来说,两个解决方案看起来特别有趣,但我对它们都有疑问。
FIRST我没有得到作者所说的散列部分"纯粹的递归解决方案会导致超出时限。我们可以通过缓存访问集中的错误访问解决方案来优化它。这将使许多重复的搜索路径短路"
SECOND我没有"否则条件"在第18行递归。其中一个条件(第14行和第16行)将始终为真,因为它们位于第11行的其他位置,如果条件为if(s2.charAt(0) != s3.charAt(0) && s1.charAt(0) != s3.charAt(0)) {
答案 0 :(得分:1)
第一
这实际上是时空权衡(计算时间可以以增加内存使用为代价来降低)。为什么作者说纯递归解缓慢(事实上它是指数时间复杂度)?它来自重复递归,因此,它一次又一次地计算相同的值。
那你能做什么?您可以存储已计算的值。下次再次需要此值时,只需在表格中查找即可。这称为缓存,当缓存值时,您可以处理函数内的每个递归调用,因为它将以O(1)时间复杂度运行。核心思想是不要两次计算相同的东西。
第二
在s2.charAt(0) == s3.charAt(0) && s1.charAt(0) == s3.charAt(0)
。