模式匹配算法

匿名 (未验证) 提交于 2019-12-02 23:49:02

模式匹配算法:

定义一个主串字符串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 }

 

转载请标明出处:模式匹配算法
文章来源: 模式匹配算法
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!