两种模式匹配算法:Brute-Force和KMP

public class TestString {
	/**
	 * Brute-Force算法
	 * 在目标串target中查找与模式串pattern相等的一个子串,并确定该子串的位置
	 * @param target
	 * @param pattern
	 * @param begin
	 * @return
	 */
	public static int indexOf(String target,String pattern,int begin){
		if(pattern!=null && pattern.length()>0 && target.length()>=pattern.length()){
			int i=begin,j=0;
			while(i < target.length()){
				if(target.charAt(i)==pattern.charAt(j)){
					i++;
					j++;
				}
				else{
					i = i-j+1;
					j=0;
				}
				if(j==pattern.length())
					return i-j;
			}
		}
		return -1;
	}
	
	/**
	 * KMP算法
	 * 在目标串target中查找与模式串pattern相等的一个子串,并确定该子串的位置
	 * @param target
	 * @param pattern
	 * @param begin
	 * @return
	 */
	public static int indexOf2(String target,String pattern,int begin){
		if(target!=null && pattern!=null && pattern.length()>0 && target.length()>=pattern.length()){
			int i=begin,j=0;
			int[] next = getNext(pattern);
			while(i

你可能感兴趣的:(数据结构与算法)