题目内容
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例
示例 1:
输入: haystack = “hello”, needle = “ll”
输出: 2
示例 2:
输入: haystack = “aaaaa”, needle = “bba”
输出: -1
类似C语言的 strstr() 以及 Java的 indexOf()函数。
python解法1
1 | class Solution(object): |
重点在于循环范围是两个字符串的差值。
java解法1
1 | class Solution { |
该解法类似于python解法1,不过java要比python多出一些边界条件的限制,i+len(needle)与len(haystack)要进行比较,否则substring要报异常。
java解法2
1 | class Solution { |
注意:
存在这样一个测试用例:
1 | "mississippi" |
之所以在else语句里要加i=i-j,是因为需要考虑到之前有部分匹配的情况,需要将i返回到起初的下一位置。