【发布时间】:2012-03-19 19:45:28
【问题描述】:
我想这是最常见的面试问题之一,但我无法以有效的方式解决它(有效意味着更小的时间复杂度和使用合适的数据结构)。
问题是这样的:
如果有一个m x n matrix 的字符(比如干草堆)和一个给定的char 长度为 k 的字符串(针)。编写一个程序来检查干草堆是否包含针。请注意,我们只需要从上到下或从左到右搜索干草堆。
例如
Haystack
ahydsfd
sdflddl
dfdfd
dfdl
uifddffdhc
Needle:
hdffi
Output:
Yes Found!!
【问题讨论】:
-
从左到右的ant从上到下分别搜索有什么问题?
-
连续两位面试官告诉我,有更好的方法。我不确定,“更好”是什么意思。
-
@javacoder990:你没问面试官的意思吗?
-
@n.m.:可能与缓存性能有关吗?无论如何,自上而下的搜索将成为缓存杀手,但您可以通过将其与从左到右的搜索混合来稍微减少未命中的总数。
-
@Steve Jessop:在“最常见的面试问题之一”中?