【算法刷题】一个字符串中连续出现次数最多的子串

该博客探讨了如何在给定字符串中找到连续出现次数最多的子串。内容涉及算法和字符串处理技巧,适合编程爱好者和算法刷题者阅读。
摘要由CSDN通过智能技术生成
//字符串中连续出现次数最多的子串
//利用后缀数组后缀数组是一种数据结构,对一个字符串生成相应的后缀数组后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。
//这样的时间复杂度为:总的时间复杂度是 O(N^2*logN),


//后缀数组,每一行比上一行少一个,跳行就可出现少2个、3个……
//第一趟:(一个长度的子串)第一行a与第二行第一个b比较是否相等,不等 (若相等则继续在第二行后取长度为1的子串比较,碰到不等为止)则
//      (两个长度的子串)第一行ab与第三行首位两个ab比较,相等,继续在第三行取长度为2的子串比较,碰到c不够终止。。
//       (三个长度的子串)以此类推···········
//第二趟:第二行的b开始于第三行的c比较········
//abababc  
//bababc
//ababc
//babc
//abc
//bc

//c

pair<int, string> fun(const string &str)
{
	vector<string> substrs;
	int len = str.length();

	string substring;
	int maxcount(0);
	//后缀数组
	cout << "the string is:" << str << endl;
	cout << "the substrings are as follows:" <&l
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值