Google或Amazone在面试中问了以下问题,我的解决方案会被接受吗?你知道吗
问题:从给定字符串中查找给定单词第一次出现的索引
注意:上面的问题来自一个网站,下面的代码通过了所有测试用例。然而,我不确定这是否是最理想的解决方案,因此是否会被大巨人所接受。你知道吗
def strStr(A, B):
if len(A) == 0 or len(B) == 0:
return -1
for i in range(len(A)):
c = A[i:i+len(B)]
if c == B:
return i
else:
return -1
如果要将整个单词与字符串中的单词匹配,则代码将无法工作。
例如,如果我的参数是
print(strStr('world hello world', 'wor'))
,那么代码将返回0,但它应该返回-1。你知道吗Python实际上有一个内置函数,这就是为什么这个问题看起来不太适合Python的采访。这样就足够了:
否则,正如评论者所提到的,输入/输出和测试是重要的。您可以添加一些使其性能稍微提高的检查(即检查B是否小于A),但我认为一般来说,您不会比O(n)做得更好。你知道吗
在这个主题中,您可以学习一些算法,例如
^{} ,^{} ,^{}
其中n是字符串长度,m是模式长度。您的算法在
O(n*m)
运行时复杂度下运行。我建议开始学习拉宾卡普算法,我个人觉得它最容易掌握。你知道吗还有一些高级主题,比如在一个字符串中搜索多个模式,比如aho-corasick算法,它很好阅读。我认为这就是
grep
在搜索多个模式时使用的。 希望有帮助:)相关问题 更多 >
编程相关推荐