package LeetCode;
public class Test {
public static void main(String[] args) {
String haystack1 = "hello";
String needle1 = "ll";
System.out.println(strStr(haystack1, needle1));
String haystack2 = "aaaaa";
String needle2 = "bba";
System.out.println(strStr(haystack2, needle2));
String haystack3 = "";
String needle3 = "";
System.out.println(strStr(haystack3, needle3));
String haystack4 = "a";
String needle4 = "a";
System.out.println(strStr(haystack4, needle4));
String haystack5 = "mississippi";
String needle5 = "pi";
System.out.println(strStr(haystack5, needle5));
}
/**
* 1. 考虑边界条件
* 1.1 两者长度相等
* 1.2 空字符串(两者为空,其中一个为空)
* 1.3 子串长度应小于等于母串
* 2. 利用API String自带子函数
* @param haystack
* @param needle
* @return
*/
public static int strStr(String haystack, String needle) {
int length1 = haystack.length();
int length2 = needle.length();
if (length1 == 0 && length2 == 0) {
return 0;
} else if (length1 == 0 && length2 != 0) {
return -1;
} else if (length1 == length2) {
return (haystack.equals(needle)?0:-1);
} else if (length1 < length2) {
return -1;
}
for (int i = 0; i < length1-length2+1; i++) {
String substring = haystack.substring(i, i+length2);
if (substring.endsWith(needle)) {
return i;
}
}
return -1;
}
}