
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;
    }
}                
                










