题目要求:
查找needle在haystack中第一次出现的位置。
例1:
Input : haystack = "Hello", needle = "ll"
Output: 2
例2:
Input: haystack = "aaaaa", needle = "bba"
Output: -1
主要思想:
首先指定haystack 和needle的指针k,j(k 的取值要小于len(haystack)-len(needle),若i大于这个值,k之后的长度就会小于len(needle)就没有比较的必要了 ),(j的取值小于len(needle))。
另外由于题目要求返回第一次匹配needle的位置的首个索引值,所以另外定义一个i来存储这个索引值,k用于循环。
1. i = 0
2. k = i, j = 0
3.如果j 小于needle的长度,并且haystack[k] == needle[j],表示当前值匹配成功,进入4,否则进入5
4.j++, i++
5.若 j = len(needle)表示匹配成功,返回i, 否则i++,并且返回2
主要代码如下:
class Solution(object): def strStr(self, haystack, needle): len1 = len(haystack) len2 = len(needle) if len(haystack) == 0 or len(needle) == 0: return 0 if len1 < len2: return -1 i = 0 while i < (len1 - len2 + 1): j = 0 k = i while j < len2 and haystack[k] == needle[j]: j += 1 k += 1 if j == len2: return i i += 1 else: return -1