模式匹配算法:
定义一个主串字符串S="goodgoogle",再定义一个模式串字符串T="google",然后依次遍历主串中的字符,判断,模式串是否在主串中存在,这种模式串的定位操作通常称为串的模式匹配
代码:
1 /** 2 * 朴素的模式匹配算法 3 * @author wydream 4 * 5 */ 6 7 public class OrdinaryModel { 8 9 public static void main(String[] args) { 10 String str="goodgoogle";//在该字符串中查找 11 String searchStr="d";//需要查找的字符串 12 //将字符串转化为StringBuffer,方便操作 13 StringBuffer bfStr=new StringBuffer(str); 14 StringBuffer bfSearch=new StringBuffer(searchStr); 15 int diff=bfStr.length()-bfSearch.length(); 16 //如果两个字符串中有一个为空,则重新输入 17 if(bfStr.length()==0||bfSearch.length()==0){ 18 System.out.println("字符串为空,请重新输入"); 19 return; 20 } 21 //如果需要查找的字符串的长度大于查找的字符长度,则直接返回,匹配失败 22 if(diff<0) { 23 System.out.println("匹配失败"); 24 return; 25 } 26 int index=0; 27 //从str中第一个字符串开始进行匹配,如果str中余下的字符串长度大于searchStr的长度,则继续进行判断 28 while((bfStr.length()-index)>=bfSearch.length()) { 29 for(int i=index;i<bfStr.length();i++) { 30 //当两个字符串中字符不等时,则跳出循环 31 if(bfStr.charAt(i)!=bfSearch.charAt(i-index)) { 32 index++; 33 break; 34 } 35 //如果searchStr字符串遍历完了,则说明匹配成功 36 if((i-index)==bfSearch.length()-1) { 37 System.out.println("匹配成功"); 38 return; 39 } 40 } 41 } 42 System.out.println("匹配失败"); 43 44 } 45 46 }