一. 题目
-
题目
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 -
示例
二. 方法一: 暴力法
-
解题思路
-
解题代码
def strStr(self, haystack: str, needle: str) -> int: # 如果needle为空, 则返回0 if not needle: return 0 size = len(haystack) len1 = len(needle) # 如果haystack的长度小于needle, 则直接返回-1 if size < len1: return -1 i = 0 # 获取被查字符串的起始字符 start = needle[0] # 循环匹配整个字符串 while i + len1 <= size: # 如果起始字符相等, 就比较子串是否和needle相等 if haystack[i] == start: # 如果相等, 就返回子串的起始下标 if needle == haystack[i: i + len1]: return i else: # 如果不相等, 则下标+1 i += 1 else: # 如果起始字符不相等, 则下标 + 1 i += 1 # 否则, 返回 -1 return -1
-
分析
三. 方式二: 公式
-
解题思路
这个方法除了熟悉公式以外. 没有任何意义, 并不推荐在解题过程中直接调用现有的公式进行提交 -
解题代码
def strStr(self, haystack, needle): index = haystack.find(needle) return index
-
分析
四. 方法三: KMP算法
—待更—