/*BF算法,即普通模式匹配算法,将字符串与标准模板进行一位一位匹配,
* 一旦失败,就将字符串第一个字符去掉,重新匹配*/
package pack;
import java.util.Scanner;
public class Main {
static int count = 0; //存放匹配的位数
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next(); //next有效字符后才可以结束输入,nextLine空行也算字符串
String s1 = in.next();
boolean isMatch = bf_match(s,s1);
if(isMatch)
sys("match success");
else
sys("match error");
}
public static boolean bf_match(String s,String s1) {
sys(s.length()+"---"+s1.length());
if(s.length()<s1.length()) { //字符串长度小于匹配字符串长度,结束程序
//sys("input error or should be end");
System.exit(0);
}
for(int i=0;i<s1.length();i++) {
if(s1.charAt(i)==s.charAt(i))
count++; //匹配到就增加1
else
{
count=0; //匹配失败将count清空,防止非连续累加
s = s.substring(1); //每次匹配失败就去掉第一个字符,递归匹配
bf_match(s,s1); //递归匹配
}
}
if(count==s1.length()) //成功匹配
return true;
else
return false;
}
public static void sys(Object obj) {
System.out.println(obj);
}
}
原文地址:http://blog.csdn.net/sjtu_chenchen/article/details/45344419