javaBF算法总结

package string;

public class BFDemo {
    public static int BF(String str,String sub,int pos ){//pos位置决定从主串的什么位置开始寻找
        if(pos<0||pos>str.length()||sub.length()>str.length()){
            return -1;
        }
        //开始查找
        int i=pos;
        int j=0;
        
        //遍历主串和子串
        while(i<str.length()&&j<sub.length()){
            //判断对应下表是否相同   charAt()寻找索引对应的元素
            if(j==-1l||str.charAt(i)==sub.charAt(j)){
                i++;
                j++;
            }else{
                i=i-j+1;
                j=0;
            }
            
        }
        //那种情况说明了子串在主串的位置
        if(j>=sub.length()){//
            return i-j;//子串出现在主串上的某一位置
        }else{
            return -1;//子串不在主串上
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str="abcabcdabc";
        String sub="abcd";
        int index=BF(str,sub,0);
        System.out.println(index);
    }

}

猜你喜欢

转载自www.cnblogs.com/ioio2/p/9031865.html