从给定的s中查找str首次出现的索引

2024-05-20 08:45:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 字符串代码lenreturnif网站defgoogle
3条回答

如果要将整个单词与字符串中的单词匹配,则代码将无法工作。
例如,如果我的参数是print(strStr('world hello world', 'wor')),那么代码将返回0,但它应该返回-1。你知道吗

Python实际上有一个内置函数,这就是为什么这个问题看起来不太适合Python的采访。这样就足够了:

def strStr(A, B):
  return A.find(B)

否则,正如评论者所提到的,输入/输出和测试是重要的。您可以添加一些使其性能稍微提高的检查(即检查B是否小于A),但我认为一般来说,您不会比O(n)做得更好。你知道吗

在这个主题中,您可以学习一些算法,例如

^{}^{}^{}

其中n是字符串长度,m是模式长度。您的算法在O(n*m)运行时复杂度下运行。我建议开始学习拉宾卡普算法,我个人觉得它最容易掌握。你知道吗

还有一些高级主题,比如在一个字符串中搜索多个模式,比如aho-corasick算法,它很好阅读。我认为这就是grep在搜索多个模式时使用的。 希望有帮助:)

相关问题 更多 >