- 题目描述
实现 strStr() 函数:给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
来源:LeetCode
- 示例
- 示例 1:
输入: haystack = “hello”, needle = “ll”
输出: 2 - 示例 2:
输入: haystack = “aaaaa”, needle = “bba”
输出: -1
- 思路分析
。。。虽然用了三种方法但是不知道这道题到底想问的是哪一种
- 方法1:正则
- 方法2:遍历查找
- 方法3:indexOf
- JAVA实现
- 方法1:
public class StrStr {
//regex
public static int strStr(String haystack, String needle) {
Matcher m = Pattern.compile(needle).matcher(haystack);
if(m.find()) return m.start();
else return -1;
}
}
- 方法2
public class StrStr {
//compare
public static int strStr_compare(String haystack, String needle) {
int len1 = haystack.length(), len2 = needle.length();
if(len2 == 0) return 0;
if(len1 == 0) return -1;
for(int i=0; i<len1+1-len2; i++) {
int j=0, mid = i;
while(j<len2 && haystack.charAt(mid) == needle.charAt(j)) {
j++;
mid++;
if(j == len2) return i;
}
}
return -1;
}
}
- 方法3
public class StrStr {
public static int strStr_indexOf(String haystack, String needle) {
return haystack.indexOf(needle);
}
}