首页 > 编程语言 >BF(Brute-Force)算法

BF(Brute-Force)算法

时间:2023-04-04 09:58:36浏览次数:32  
标签:index BF Force int Brute len pos char return

一、问题引入

模式匹配算法是对两个字符串进行比较匹配的算法。

在两个串中字符逐个匹配,若完全匹配,则返回位置,否则返回-1。

二、解决过程

#include <stdio.h>

int index_bf(char *S, char *T, int pos)
{
	int S_len = strlen(S);
	int T_len = strlen(T);
	if (S_len == 0 || T_len == 0)
		return -1;
	if (pos < 0 || pos > S_len-1)
		return -1;
	int i = pos, j = 0;
	while (i < S_len && j < T_len)
	{
		if (S[i] == T[j])
		{
			++i;
			++j;
		}
		else
		{
			i = i - j + 1; // i 移到最近一次相等的位置
			j = 0;         // j 移到起点位置
		}
	}
	if(j == T_len) // 若字符串S和T全部比较完后,且j的位置移到T的末尾,则匹配成功
		return (i - T_len);
	else
		return -1;
}

int main(void)
{
	char S[] = {"hello world"};
	char T[] = {"heo"};
	int index; // index从0开始
	printf("S_String:%s\n", S);
	printf("T_String:%s\n", T);
	if (-1 == ( index = index_bf(S, T, 0)))
	{
		printf("Not found\n");
	}
	else
	{
		printf("Found, index is %d\n", index);
	}
	return 0;
}

标签:index,BF,Force,int,Brute,len,pos,char,return
From: https://www.cnblogs.com/caojun97/p/17285314.html

相关文章

  • Codeforces Round 862 (Div. 2) A-D题解
    比赛地址A.WeNeedtheZero题意:给出一个数组,对任意1<=i<=n,令bi=aix,问是否存在x,使得b<sub>1</sub>b2...bn=0Solution如果n为奇数,那么x一定存在,因为偶数个x异或得到的是0,直接令x=0(a<sub>1</sub>a2...an)即可如果n为偶数,那么x取任何值都不会影响结果,所以只用看a1a<sub>2</sub......
  • Codeforces Round 862 (Div. 2) (4.2)
    CodeforcesRound862(Div.2)A-WeNeedtheZero思路:某个数被异或两次相当于没变,即判断n的奇偶性;n为偶数时判断所有数异或后的数是否为0,若为0,输出任意数;n为奇数时答案为所有数异或后的值#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>PII;consti......
  • Codeforces Round 862 (Div. 2)A-C思路复盘
    感觉这场前三题都简单,复盘一下赛时的脑回路QAQ,c二分wa了四发赛后才过的血亏A题意:问是否能找到一个数x,有\(b_i=a_i⊕x\),使得\(b\)数组的总异或和为0。思路:赛时模拟样例可以发现先把a数组的总异或和求出来假设为x,然后由异或性质可知相同为0,不同为1,可知这个x可能就是答案。然......
  • 运行rootcrs.pl -deconfig -force -verbose报错(Can't locate Env.pm)
    1、一套11gR2RAC测试环境,折腾崩溃了,打算deconfig重构集群,于是运行了如下命令:[root@11grac111grac1]#/u01/app/11.2.0.4/grid/crs/install/rootcrs.pl-deconfig-force-verboseCan'tlocateEnv.pmin@INC(@INCcontains:/usr/local/lib64/perl5/usr/local/share/perl5/......
  • Codeforces Round 861 (Div. 2)
    题目链接C核心思路这个思路说实话有点玄学,也就是我们前面的数位按照l或者r的相同数位来填补,后面就填相同的数字也就是比如l是2345我们可以是2999,2888,23111,23777.这样构造好像肯定是最小的。但是好好巩固下数位dp来做这道题还是更好的。#include<iostream>#include<cstr......
  • Codeforces Round 859 (Div. 4) ABCDE(交互题)FG1G2
    EFG1G2质量还挺好的A.PlusorMinushttps://codeforces.com/contest/1807/problem/A题目大意:给定a,b,c,问我们是a+b==c还是a-b==c?把正确的符号输出。input1112332129-7347112110336991899019-81910output+--++-++--+......
  • Codeforces Gym 103931F - Forest of Magic(时间轴分块+线段树合并)
    一个巨烦的时间轴分块做法,有点类似于P2137Gty的妹子树先考虑静态的情况。看上去就一脸线段树合并对吧?一次修改的操作对一个点\(x\)贡献可以写成\(k·dep_x+b\)的形式,开两棵线段树合并维护一次项和零次项系数即可。由于静态问题可做,因此考虑时间轴分块。设阈值\(B\),每\(B......
  • Tapdata Connector 实用指南:如何将 CRM 数据从 Salesforce 实时同步到 MongoDB 等其他
    【前言】作为中国的“Fivetran/Airbyte”,Tapdata是一个以低延迟数据移动为核心优势构建的现代数据平台,内置60+数据连接器,拥有稳定的实时采集和传输能力、秒级响应的数据实时计算能力、稳定易用的数据实时服务能力,以及低代码可视化操作等。典型用例包括数据库到数据库的复制......
  • HCIP-ICT实战进阶10-BFD原理与配置
    HCIP-ICT实战进阶10-BFD原理与配置0引言之前学习的比如链路聚合、STP、RSTP、MSTP以及一些路由协议,所有的协议都可以实现一种能力:冗余备份网络中如果真的发生了设备的故障或者是链路故障,则以上的各种协议需要检测到故障,然后进行网络的链路切换.生成树协议发生故障生成树......
  • Codeforces Round 860 (Div. 2)
    Preface两三天没写题了小小的补一下题结果这场意外地很合胃口,1h不到就把A-E做完了,而且除了忘记初始化这种一眼丁真的错误好像也没写挂可惜当时懒了周日晚上就不打了(主要......