手写Java的字符串简单匹配方法IndexOf()

简单的字符串模式匹配算法,可使用KMP进行优化

    /**
     * @param s1 母串
     * @param s2 子串
     * @return
     */
    public static int myIndexOf(String str1,String str2) {
        int pos=-1;
        int index=0;
        char [] s1= str1.toCharArray();
        char [] s2= str2.toCharArray();
        
        if(str2.length()>str1.length() || str2.length()==0) {
            return -1;
        }
        /**
         * offset 偏移量,注意不要越界也可以
         */
        for(int i=0;i=s1.length || s1[i+offset]!=s2[offset]) {
                    flag=true;
                }
            }
            if(flag==false) {
                pos=i;
                break;
            }
        }
        
        return pos;
    }

使用随机数类生成一个Long和Int数据进行测试,并与Java的方法进行对比

    public static void main(String[] args) {
        for(int i=1;i<50;i++) {
            String str1 = new String(new Long(new Random().nextLong()).toString()); 
            String str2 = new String(new Long(new Random().nextInt(100)).toString());   
            System.out.println(str1);
            System.out.println(str2);
            System.out.println("String的----------------:"+str1.indexOf(str2));
            System.out.println("我的           ----------------:"+myIndexOf(str1, str2));
        }

    }

输出

-3622146795902383909
57
String的----------------:-1
我的           ----------------:-1
1679239383684246692
67
String的----------------:1
我的           ----------------:1
-1953669201709644975
39
String的----------------:-1
我的           ----------------:-1
6962415100876379873
10
String的----------------:7
我的           ----------------:7
-4904617570101049131
90
String的----------------:2
我的           ----------------:2

你可能感兴趣的:(手写Java的字符串简单匹配方法IndexOf())