模式匹配之首位匹配

本文深入探讨模式匹配中的首位匹配技术,揭示其在搜索算法和文本处理中的关键作用。通过实例解析,阐述首位匹配如何提高效率并减少不必要的比较,是理解高效字符串查找不可或缺的知识。
摘要由CSDN通过智能技术生成
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>

# define MAXSTRLEN 255

typedef unsigned char Sstring [MAXSTRLEN + 1];

int index (Sstring S, Sstring T)	//这个写法虽然效率也不怎么高,但是写法真是有点别致。我是参考自严蔚敏视频配套讲义写的
									//主要结构if...else if...else {while ... if ... else...}的整体构思很经典的!!!
{
	int i = 1;

	while (i <= S[0] - T[0] + 1)
	{
		if (S[i] != T[1])
		{
			++i;

			printf("头不匹配, i = %d\n", i);
		}
		else if (S[i + T[0] - 1] != T[T[0]])
		{
			++i;

			printf("头匹配尾不匹配, i = %d\n", i);
		}
		else
		{
			printf("头尾匹配, i = %d\n", i);

			int j = 2;
			int k = 1;

			while (T[j] == S[i + k] && j < T[0])
			{
				++k;
				++j;

				printf("匹配到T中第%d个字符, i = %d, j = %d, k = %d\n", j, i, j, k);
			}

			if (j == T[0])
			{
				printf("匹配完成!i = %d,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值