前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模式匹配算法

模式匹配算法

作者头像
说故事的五公子
发布2019-09-11 17:25:18
8700
发布2019-09-11 17:25:18
举报

模式匹配算法:

定义一个主串字符串S="goodgoogle",再定义一个模式串字符串T="google",然后依次遍历主串中的字符,判断,模式串是否在主串中存在,这种模式串的定位操作通常称为串的模式匹配

代码:

代码语言:javascript
复制
 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 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模式匹配算法:
  • 代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档