4.3 串的模式匹配算法

本文介绍了串的模式匹配算法,特别是求子串位置的定位函数Index(S,T,pos)。算法4.5通过定长顺序存储结构实现,不依赖于其他串操作。基本思路是从主串的指定位置开始,逐字符与模式串比较,若匹配失败则主串后移重新开始。当找到与模式串完全匹配的子串时,返回其在主串中的位置。" 130624457,275413,Spark SQL深度解析:DataFrame与Dataset操作实战,"['Spark', '大数据处理', '数据帧', '数据集', 'SQL']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      4.3.1 求子串位置的定位函数Index(S,T,pos)

算法4.5:

采用定长顺序存储结构,可以写出不依赖于其它串操作的匹配算法。

int Index(SString S,SString T,int pos)
     {
           i = pos;
           j = 1;
           while(i <= S[0] && j <= T[0])
            {
                   if(S[i] = = T[j])
                    {
                          ++i;++j
                     }
                   else
                    {
                           i = i - j + 2; j = 1;
                    }
            }
            if(j > T[0]) return i - T[0];
     }

        在算法函数过程中,分别用计数指针i 和 j 指示主串S和模式串T当前正在比较字符的位置。

算法的基本思想:从主串的第pos个位置起,和模式串的第一个字符比较,若相等则继续比较后面的字符;若不等则主串往后移继续与模式串的第一个字符开始比较起。一次类推,直到主串S中出现一个连续的和模式串T相等的子串,则匹配成功。函数返回值为与模式串匹配成功的那个主串位置,这个位置是和模式串的第一个字符比较的主串的字符位置。

























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值