题目:Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
题目大意:给两个字符串haystack和needle。返回needle在haystack中第一次出现的位置。
思路:遍历haystack。如果在i位置满足条件就返回当前位置。注意边界条件。
开始试了一下needle长度为1的时候,然后代码结构基本不变。第一次用切片,在i位置切片j长度。AC 700ms勉过。。效率太低。
class Solution(object):
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
j=len(needle)
k=len(haystack)
if j==0: return 0
if k==0: return -1
for i in range(k):
if haystack[i:i+j]==needle:
return i
return -1
class Solution(object):
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
j=len(needle)
k=len(haystack)
if j==0: return 0
if k==0 or j>k: return -1
for i in range(k):
n=0
if k-i<j:
break
for m in range(j):
if haystack[i]!=needle[0]:break
if haystack[i+m]==needle[m]:
n+=1
if n==j:
return i
return -1
判断条件用统计变量n来做。在i位置判断j次,haystack从i位置开始的元素和needle的元素一一比较,相等就n+1。如果n等于needle的长度就返回当前i位置。如果haystack的当前位置第一个元素不等于needle首元素,就break。
AC 72ms。