Java 串匹配Brute-Force算法

每天基础(1),串匹配之Brute-Force算法,最简单的遍历算法。另外有KMP算法,是对此算法的改进,避免每次比较都回回退。

package ibees.sample; /** * 字符串匹配模式算法Brute-Force算法,此算法每次比较都会回退 * @author hhzxj2008 * */ public class StringMatch { /** * 相当于java.lang.String的indexOf,采用Brute-Force算法 * */ public int match(String str,String substr){ //1.字串的第一字符与主串的第一个字符比较,若不匹配字串的第一个字符和主串的第二个字符比较 //2.若字串的第一个字符与主串的某一位置上字符串匹配,则将字串的第二个字符与主串该位的下一位置 // 进行比较,依次类推。遇到不相等,则重复第一步。 int index = -1; boolean match = true; for(int i = 0; i <= str.length()-substr.length(); i ++){//str match = true; for(int j = 0; j < substr.length(); j ++){//substr if(str.charAt(i+j) != substr.charAt(j)){ match = false; } } if(match){ index = i; break; } } return index; } }

KMP算法主要考虑在比较的过程中存在部分匹配,所以不用每次都回退。这里不作具体的介绍。

你可能感兴趣的:(Java)