Leetcode 28题 Implement strStr()
Implement strStr().
Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Example 1:
Input: haystack = "hello", needle = "ll"
Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba"
Output: -1
题目大意:
刚开始没有看懂什么意思。 后来明白了,是判断needle是否在haystack中,如果在就返回出现的首地址。如果不在就返回-1.
首先python中的.find()方法就是完成这件事情的。 长串中找小串。
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
return haystack.find(needle)
只有行代码好像有点不太合适。 从逻辑上考虑考虑。
过程还行,上代码。
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
M = len(haystack)
N = len(needle)
for i in range(M-N+1):
if haystack[i:i+N] == needle:
return i
return -1
这里有个基础知识卡住了。
比如string[0:2],返回的值是[0]和[1],实际上是两个数。
所以haystack[i:i+N],实际返回的是[i]到[i+N-1]。
这里要注意边界值。
for i in range(M-N+1) 这里处理了i的边界值的问题。
i 的遍历区间是 0 到 M-N闭区间,所以一定要M-N+1. 把最后一个数字也循环到。 想不明白的小伙伴可以在纸上画一画。
17/04/2020
疫情中的英国,
加油!