Python、java、go实现"strStr()"的几种方法

实现strStr()
输入haystack和needle两个字符串,返回haystack中第一次出现needle字符串的索引下标。如果不存在,返回-1

【Python、java、go实现"strStr()"的几种方法】Example 1:
Input: haystack = "hello", needle = "ll" Output: 2

Example 2:
Input: haystack = "aaaaa", needle = "bba" Output: -1

说明:当needle为空时,返回0
1:利用字符串自带的str.find()方法返回满足条件的索引下标
def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ if not needle: return 0 return haystack.find(needle)

2:遍历haystack字符串,判断是否匹配needle字符串,返回对应结果
def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ if not needle: return 0 if needle not in haystack: return -1 else: for index in range(len(haystack)): if haystack[index:index+len(needle)]==needle: return index

上面是 python 实现,下面是 java 实现的版本
public int strStr(String haystack, String needle) { if (needle.length() > haystack.length()) { return -1; } int hayLen = haystack.length(); int neeLen = needle.length(); for (int i = 0; i + neeLen <= hayLen; i++) { if (haystack.substring(i,i+neeLen).equals(needle)) { return i; } } return -1; //return haystack.indexOf(needle); }

以下是 go 实现版本
func strStr(haystack string, needle string) int { if len(needle) > len(haystack) { return -1 } for head := 0; head + len(needle) <= len(haystack); head++ { if haystack[head:head+len(needle)] == needle { return head } } return -1 }

算法题来自:https://leetcode-cn.com/problems/implement-strstr/description/

    推荐阅读