算法思想:从主串的的第一个字符起与模式串的第一个字符比较,若相等,则继续逐对字符进行后续的比较,否则主串从第二个字符起与模式串的第一个字符重新比较,直至模式串中的每个字符依次和主串中的一个连续的字符序列相等为止,此时称为匹配成功,否则匹配失败。
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1="abacaabbc";
String s2="abb";
int i=0;
int j=0;
char arr1[]=s1.toCharArray();
char arr2[]=s2.toCharArray();
while(i<arr1.length && j<arr2.length){
if(arr1[i]==arr2[j]){//如果相同,则继续向后比较
i++;
j++;
}else{//如果不同,就回溯,重新查找
i=i-j+1;
j=0;
}
}
if(j>=arr2.length){
System.out.println("找到的位置是:"+(i-arr2.length));
}else{
System.out.println("没找到!");
}
}
}
运行结果:
找到的位置是:5
-------------
或
public class test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1="abacaabbc";
String s2="abb";
int i=0;
int j=0;
char arr1[]=s1.toCharArray();
char arr2[]=s2.toCharArray();
while(i+j<arr1.length && j<arr2.length){
if(arr1[i+j]==arr2[j]){
j++;
}else{
i++;
j=0;
}
}
if(j>=arr2.length){
System.out.println("找到的位置是:"+i);
}else{
System.out.println("没找到!");
}
}
}
运行结果:
找到的位置是:5
分享到:
相关推荐
大连理工大学数据结构上机题字符串朴素模式匹配算法字符串朴素模式匹配算法字符串朴素模式匹配算法字符串朴素模式匹配算法
### 朴素模式匹配算法知识点详解 #### 一、朴素模式匹配算法概述 朴素模式匹配算法是一种基础的字符串匹配算法,其基本思想是将一个模式串(即待查找的字符串)在主串(即待搜索的大字符串)中进行逐个字符比较,...
BF 算法--串的朴素模式匹配算法 BF 算法(Brute Force 算法)是一种朴素的串模式匹配算法,用于在主串中查找子串的位置。该算法的时间复杂度为 O(n*m),其中 n 是主串的长度,m 是子串的长度。 BF 算法的主要思想是...
本节主要讨论的是朴素模式匹配算法,这是一种基础且直观的字符串匹配方法。 首先,我们来理解一下什么是字符串的模式匹配。在给定的一个主串(也称作目标串)中,我们要寻找是否存在一个与模式串(查询串)完全相同...
一般而言文本就是要编辑的文档,而模式字符串往往由用户来指定,高效的字符串匹配 算法可以提高程序的响应性能,当然字符串匹配算法的应用远远不止于此,例如在生物计算科学中查找特定的DNA序列,也是字符串匹配算法...
模式匹配算法主要有两种,分别是朴素模式匹配算法和KMP算法。KMP算法因其实现高效而备受关注,本文将详细解读KMP算法的工作原理及其实现过程。 KMP算法全称为Knuth-Morris-Pratt算法,由Donald Knuth、Vaughan ...
实现功能:朴素的模式匹配算法(BF算法)、KMP改进算法(Next[ ])、KMP改进算法(NextVal[ ])。 主控菜单: 1.输入主串、子串和匹配起始位置 2.朴素的模式匹配算法 3.KMP改进算法(Next[ ]) 4.KMP改进算法(NextVal...
本实验“基于字符串模式匹配算法的病毒感染检测问题”聚焦于如何利用这些算法来识别潜在的恶意代码,从而预防计算机病毒感染。 《数据结构(C语言版 第2版)》一书由著名计算机科学家严蔚敏编著,书中涵盖了各种...
朴素模式匹配算法,该算法相对简单,其算法思想是将子串中的每个字符依次与主串中的字符进行比较(需要设置两个指针),若不相等则与主串的下一个字符比较,直到完全匹配,算法最后返回子串在主串中的位置。...
字符串模式匹配算法在此过程中扮演了核心角色,因为它可以高效地查找可能的病毒签名或恶意代码序列。本话题将深入探讨如何利用C语言实现基于字符串模式匹配算法的病毒感染检测。 首先,我们需要了解字符串模式匹配...
1. **朴素模式匹配算法(Naive Pattern Matching Algorithm)** 朴素模式匹配是最基础的算法,其原理是对文本串中的每个位置进行尝试,看是否能与模式串完全匹配。如果文本串的某个子串与模式串相同,那么我们就...
KMP(Knuth-Morris-Pratt)模式匹配算法是一种在主串(目标字符串)中查找子串(模式字符串)的高效算法,由D.E. Knuth、V.R. Morris和J.H. Pratt于1977年提出。相较于简单的暴力匹配方法,KMP算法在模式匹配过程中...
在朴素模式匹配算法中,当模式串和目标串之间的某个字符不匹配时,通常会将目标串向右移动一个位置,然后从头开始再次比较。而KMP算法通过构建一个辅助数组`next[]`,使得在发生失配时能够快速跳过一些比较,从而...
朴素模式匹配算法的基本思想是从主串的起始位置开始逐个字符地与模式串进行比较。如果所有字符都匹配,则模式串在该位置被找到;否则,模式串相对于主串向右移动一位,重复比较过程。这种方法的时间复杂度为O(m*n),...
本文将详细探讨两种常见的模式匹配算法:朴素算法和通配符扩展算法。 首先,我们来理解朴素算法。朴素字符串匹配算法是最基本的匹配方法,由Knuth-Morris-Pratt (KMP) 在1970年代提出。它的基本思想是对给定的文本...
1. **朴素的模式匹配算法**:这是最基本的方法,通过逐个字符比较来查找模式串在主串中的位置。当模式串的某个字符与主串的对应位置不匹配时,需要回溯到主串的下一个位置重新开始匹配。这种方法简单直观,但效率较...
**KMP字符串模式匹配算法详解** KMP(Knuth-Morris-Pratt)算法是一种高效地在主串(text)中查找子串(pattern)的字符串模式匹配算法,由Dijkstra、Morris和Pratt在1970年提出。这个算法避免了不必要的字符比较,...
例如,朴素的模式匹配算法就是一个简单的方法,它通过比较每个字节来逐个检查文本是否包含目标模式。以下是一个简单的实现: ```csharp public static List<int> FindPattern(byte[] text, byte[] pattern) { List...
- 改进了朴素模式匹配算法中的部分步骤,减少了不必要的比较次数。 - 通过预先处理模式串的信息,可以跳过一些不必要的比较,从而提高效率。 - 常见的改进算法有KMP算法等。 #### 四、应用领域 1. **信息检索...