题目来源:
https://leetcode.com/problems/implement-strstr/description/
题目分析:
输入两个字符串haystack和needle,如果needle是haystack的一个子串,那么返回这个子串在haystack出现的第一个位置,否则返回-
解决代码:
一开始看到这个题目,脑海出来的就是“in”和“not in”的用法,后来在如何找到下标那遇到问题。看到别人有用到.index()函数,解决问题。
先来解释一下index()函数的相关用法。http://www.runoob.com/python/att-string-index.html
具体来说,它用来检测字符串中是否包括子串。如果包括的话,返回子串开始的索引,否则抛出异常。
则我解决的代码为:
class Solution:
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
if needle in haystack:
return haystack.index(needle)
else:
return (-1)
除此以外,还可以暴力检索。将needle看成一个整体,一块一块的去比较,如果有,返回下标i,否则返回-1.
class Solution:
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
for i in range(len(haystack)-len(needle)+1):
if(haystack[i:i+len(needle)]==needle):
return i
return -1