package com.example.demo.leecode;
/**
 * 实现 strStr() 函数。
 * @Date 2020/12/29
 * @author Tang
 * 给定一个 haystack 字符串和一个 needle 字符串,
 * 在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。
 *
 */
public class ImplementStrstr {
    private char[] charArray;
    private char[] needleArray;
    public int execute(String haystack, String needle){
        if(haystack == null || needle == null){
            return -1;
        }
        if(haystack.equals(needle)){
            return 0;
        }
        charArray = haystack.toCharArray();
        needleArray = needle.toCharArray();
        //各种判断,恶心
        if(needleArray.length == 0){
            return 0;
        }
        if(charArray.length == 0 || charArray.length < needleArray.length){
            return -1;
        }
        for(int i = 0; i < charArray.length; i++){
            if(charArray[i] == needleArray[0] && ifOccurrence(i)){
                return i;
            }
        }
        return -1;
    }
    //判断charArray从Index位置开始,是否完全包含needleArray
    private boolean ifOccurrence(int index){
        int j = 0;
        while(j < needleArray.length && index < charArray.length){
            if(needleArray[j] != charArray[index]){
                return false;
            }
            j++;
            index++;
        }
        return j == needleArray.length;
    }
    public static void main(String[] args) {
        String charArray = "mississippi";
        String needleArray = "issippi";
        int execute = new ImplementStrstr().execute(charArray, needleArray);
        System.out.println(execute);
        //还有一种简单解法
        int i = charArray.indexOf(needleArray);
        //。。。。
    }
}