SSL_2575 给出字符串

本文介绍了一个基于三重循环的字符串匹配算法,该算法用于找出一个字符串中出现至少两次的最长子串。通过枚举所有可能的子串组合,并使用一个辅助函数来比较这些子串是否相同,最终找到满足条件的最长子串。

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

题意:

    求在一个字符串中里出现了至少2次的子串的最大长度。

思路:

    三重循环枚举。

代码:

#include<cstdio>
#include<string>
using namespace std;
char c[121],l;
int pd(int x,int x1,int y)//判断x开头和x1开头长度为y的子串是否相等
{
	int a=x1,b=x;
	if (c[a]!=c[b]) return false;
	while (y>=0)
	{
		y--;
		if (c[a]!=c[b]) return false;
		a++;b++;
	}
	return true;
}
int main()
{
	scanf("%s",c);
    l=strlen(c);
    for (int i=l-1;i>=1;i--)//枚举长度
      for (int j=0;j<=l-i+1;j++)//枚举第一个的开头
        for (int k=0;k<=l-i+1;k++)//第二个的开头
          if (j!=k&&pd(j,k,i)) {printf("%d",i+1);return 0;}
    printf("0");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值