SundayOptUtils

/**
     * @param pattern 模式串:要匹配的短语
     * @param input 被匹配的短语输入
     * **/
    private static boolean indexOf(String pattern, String input){
        try{
            int n = pattern.length();
            int m = input.length();
            if(m <= 0 || n <= 0){
                return false;
            }
            if(m < n){
                return false;
            }
            //初始化位置为0
            int i  = 0;
            int j  = 0;
            //当pattern的索引遍历完全时,表示已经匹配到了字符
            while (i < m && j < n){
                System.out.println(input.charAt(i) + " === " +  pattern.charAt(j));
                if(input.charAt(i) != pattern.charAt(j)){
                    int x = 0;

                    //获取是否在模式串中存在当前匹配串对应的该字符
                    for(; x < n; ++x){
                        if(input.charAt(i) == pattern.charAt(x)){
                            break;
                        }
                    }
                    x = n - x;
                    //如果是没有匹配的字符,则直接跳过当前之前的所有字符;否则则将索引置为存在的模式串对应匹配串的所在第一个字符
                    if(x != 0){
                        i = i - x + 1;
                    }else {
                        i = i + n;
                    }
                    j = 0;
                }else{
                    ++i;
                    ++j;
                }
            }


            return true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

    public static void main(String[] args) {
        boolean matchs = indexOf("海贼王", "我是要成为海贼王的男人还好大");
        System.out.println(matchs);
    }

你可能感兴趣的:(SundayOptUtils)