1 #include <iostream>
2 using namespace std;
3 int BF(char S[], char T[]);
4 int main()
5 {
6 char s1[100], s2[10];
7 int index = 0;
8 cout << "请输入主串:" << endl;
9 cin >> s1;
10 cout << "请输入模式串:" << endl;
11 cin >> s2;
12 index = BF(s1, s2);
13 if (index==0)
14 {
15 cout << s2 << "不是" << s1 << "的子串" << endl;
16
17 }
18 else
19 {
20 cout << s2 << "在" << s1 << "的位置是"<<index << endl;
21 }
22 return 0;
23 }
24 int BF(char S[], char T[])
25 {
26 int start = 0;//主串从下标0开始第一趟匹配
27 int i= 0,j=0;/*设置比较的起始下标*/
28 while ((S[i]!='\0')&&(T[j]!='\0'))
29 {
30 if (S[i]==T[j])
31 {
32 ++i; ++j;
33 }
34 else
35 {
36 i = i - j + 1, j = 0;//start++; i = start; j = 0;/*i和j分别回溯*/
37 }
38 }
39 if (T[j]=='\0')
40 {
41 return i - j + 1;//start + 1;//返回本趟匹配的起始位置(不是下标)
42 }
43 else
44 {
45 return 0;
46 }
47 }

朴素的模式匹配算法BF的更多相关文章

  1. 字符串模式匹配算法--BF和KMP详解

    1,问题描述 字符串模式匹配:串的模式匹配 ,是求第一个字符串(模式串:str2)在第二个字符串(主串:str1)中的起始位置. 注意区分: 子串:要求连续   (如:abc 是abcdef的子串) ...

  2. BF算法(朴素的模式匹配算法)

    #include <stdio.h> #include <stdlib.h> int Index_BF(char S[],char T[])//s为目标串(长串),t为模式串( ...

  3. 【Java】 大话数据结构(8) 串的模式匹配算法(朴素、KMP、改进算法)

    本文根据<大话数据结构>一书,实现了Java版的串的朴素模式匹配算法.KMP模式匹配算法.KMP模式匹配算法的改进算法. 1.朴素的模式匹配算法 为主串和子串分别定义指针i,j. (1)当 ...

  4. 大话数据结构(8) 串的模式匹配算法(朴素、KMP、改进算法)

    --喜欢记得关注我哟[shoshana]-- 目录 1.朴素的模式匹配算法2.KMP模式匹配算法 2.1 KMP模式匹配算法的主体思路 2.2 next[]的定义与求解 2.3 KMP完整代码 2.4 ...

  5. 详细解读KMP模式匹配算法

    转载请注明出处:http://blog.csdn.net/fightlei/article/details/52712461 首先我们需要了解什么是模式匹配? 子串定位运算又称为模式匹配(Patter ...

  6. 数据结构(十六)模式匹配算法--Brute Force算法和KMP算法

    一.模式匹配 串的查找定位操作(也称为串的模式匹配操作)指的是在当前串(主串)中寻找子串(模式串)的过程.若在主串中找到了一个和模式串相同的子串,则查找成功:若在主串中找不到与模式串相同的子串,则查找 ...

  7. 字符串匹配算法---BF

    Brute-Force算法,简称BF算法,是一种简单朴素的模式匹配算法,常用语在一个主串string 内查找一个子串 pattern的出现位置. 核心思想: i 遍历主串string i 每自增一次, ...

  8. [从今天开始修炼数据结构]串、KMP模式匹配算法

    [从今天开始修炼数据结构]基本概念 [从今天开始修炼数据结构]线性表及其实现以及实现有Itertor的ArrayList和LinkedList [从今天开始修炼数据结构]栈.斐波那契数列.逆波兰四则运 ...

  9. 字符串的模式匹配算法——KMP模式匹配算法

    朴素的模式匹配算法(C++) 朴素的模式匹配算法,暴力,容易理解 #include<iostream> using namespace std; int main() { string m ...

随机推荐

  1. 【Java】阿里巴巴开发规范手册

    Java 开发手册 一. 编程规约 (一) 命名风格 [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name, $name, __name [强制]代码中 ...

  2. .netcore简单使用hangfire

    Hangfire简介 Hangfire是一个开源的任务调度框架,它内置集成了控制页面,很方便我们查看,控制作业的运行:对于运行失败的作业自动重试运行.它支持永久性存储,支持存储于mssql,mysql ...

  3. Inception系列之Batch-Normalization

    训练深度神经网络非常复杂,因为在训练过程中,随着先前各层的参数发生变化,各层输入的分布也会发生变化,图层输入分布的变化带来了一个问题,因为图层需要不断适应新的分布,因此训练变得复杂,随着网络变得更深, ...

  4. C++常见的面试题目整理

    本文列出C++面试中经常遇到的一些问题,都是一些常见的面试考点,如果后续遇到其他常见面试问题还会再次更新.希望对近期参加面试的同学有一些帮助.先后顺序与问题的重要性无关,查看的时候,最好是全面了解一下 ...

  5. 处理request信息的ngx_http_process_request

    在处理完http的头部信息后  然后在 处理request-body信息ngx_http_process_request-------- -----------ngx_http_process_req ...

  6. 内核crash>>>磁盘空间小 怎么处理

    在内存发生panic时,需要把panic的日志保存下来.以方便日后进行分析. 一般主机为x86的时候,panic 使用 kdump保存log.由于它使用占用大量内存和硬盘.所以当磁盘空间不够时,就会遇 ...

  7. leetcode 30day--2

    202. Happy Number Write an algorithm to determine if a number n is "happy". A happy number ...

  8. 使用Ganglia监控系统监控集群(debian)

    ganglia是一个集群监控软件,底层使用RRDTool获得数据. Ganglia分为ganglia-monitor和gmetad两部分,前者运行在集群每个节点上(被监控机器)收集RRDTool产生的 ...

  9. 常用linux源列表

    本篇记录一些常用的源文件,后面需要用到的时候,直接进行复制粘贴即可 centos 相关 base源 [base] name=CentOS-$releasever - Base - mirrors.al ...

  10. Appium常用操作之「Toast提示信息获取」

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.什么是 Toast 二.获取 Toast 提示信息的前提 1.针对这种元素,有的时候我们需要 ...