模式匹配、字符串匹配(蛮力法)

**#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int StringMatch(string T,string s)
{
	int n = T.size();       //文本长度
	int m = s.size();           //模式长度
	for (int i = 0; i < n - m; i++) //只需比较前n-m个字符
	{
		int j = 0;
		while (j < m&&s[j] == T[i + j])    //查找符合的
			j++;
		if (j == m)           //匹配成功返回模式在文本中的开始位置
			return i;   
	}
	return -1;      //否则返回-1
}

int main()
{
	string T, P;
	cin >> T;
	cin >> P;
	cout << StringMatch(T, P) << endl;
    return 0;
}
蛮力(Brute Force)是一种简单直观的字符串匹配。在C语言中实现蛮力字符串匹配,基本思想是将目标字符串(主串)与模式字符串(模式串)进行对比,从主串的第一个字符开始与模式串的第一个字符对齐,若相同则继续比较下一个字符,若不同则从主串的第二个字符开始重新与模式串的第一个字符对齐,重复这个过程,直到模式串完全匹配或主串中已经没有足够的位置与模式串对齐为止。 以下是用C语言实现蛮力字符串匹配的一个简单示例代码: ```c #include <stdio.h> #include <string.h> // 蛮力字符串匹配函数 int brute_force_match(const char *text, const char *pattern) { int n = strlen(text); // 主串长度 int m = strlen(pattern); // 模式串长度 int i, j; for (i = 0; i <= n - m; i++) { for (j = 0; j < m; j++) { if (text[i + j] != pattern[j]) { break; // 如果字符不匹配,则跳出内层循环 } } if (j == m) { return i; // 如果全部字符都匹配,返回模式串在主串中的起始位置 } } return -1; // 如果匹配失败,则返回-1 } int main() { const char *text = "This is a simple example."; const char *pattern = "simple"; int position = brute_force_match(text, pattern); if (position != -1) { printf("找到模式串的位置:%d\n", position); } else { printf("未找到模式串。\n"); } return 0; } ``` 在这个代码中,`brute_force_match` 函数通过双层循环遍历主串和模式串,如果在某个位置发现字符不匹配,则外层循环移动一位,内层循环重新开始比对。如果在某个位置模式串的所有字符都匹配,则返回该位置,否则当主串遍历完毕仍未找到匹配的模式串时,返回-1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值