实现strStr()
输入haystack和needle两个字符串,返回haystack中第一次出现needle字符串的索引下标。如果不存在,返回-1
【Python、java、go实现"strStr()"的几种方法】Example 1:说明:当needle为空时,返回0
Input: haystack = "hello", needle = "ll" Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba" Output: -1
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/
推荐阅读
- Python、java、go实现"搜索插入位置"的几种方法
- 欧几里德算法证明
- Data|判断四个点是否可以构成矩形(优雅的解法!!!)
- Data|数据结构与算法笔记: 贪心策略之BST&BBST, Hashtable+Dictionary+Map, Priority Queue~Heap, Minium Spanning Tree
- Data|[转载] 线性表的数组实现