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
最佳答案
在本主题中,您可以学习一些算法,如rabin karp algorithm
,z algorithm
,kmpalgorithm
其中所有运行在O(n+m)
的运行时间复杂度,其中n是字符串长度,m是模式长度。算法运行在O(n*m)
运行时复杂度。我建议开始学习rabin-karp算法,我个人觉得它最容易掌握。
还有一些高级主题,比如在一个字符串中搜索多个模式,比如aho-corasick算法,很好阅读。我认为这就是grep
在搜索多个模式时使用的功能。
希望有帮助:)
关于python - 从给定的str中找到str首次出现的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55789061/