首页 > 其他分享 >求一个字符串中连续出现次数最多的子串

求一个字符串中连续出现次数最多的子串

时间:2022-12-01 20:04:40浏览次数:45  
标签:子串 cnt subs substr int ++ len 次数 字符串


例如字符串“abababc”,最多连续出现的为ab,连续出现三次。

求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如

abababc
bababc
ababc
babc
abc
bc
c

这题跟 

后缀数组求最长重复子串 一样都用到了后缀数组。

#include<iostream>
#include<string>
#include<vector>
using namespace std;


pair<int, string> fun(string str){
int len = str.size();
vector<string> subs(len);
for (int i = 0; i < len; i++){
subs[i] = str.substr(i, len - i);
}
int maxSub=0;
string res;
for (int i = 0; i < len; i++){
for (int j = i + 1; j < len; j++){
int cnt = 1;
if (subs[i].substr(0, j - i) == subs[j].substr(0, j - i)){
cnt++;
for (int k = j + (j - i); k < len; k += j - i){
if (subs[i].substr(0, j - i) == subs[k].substr(0, j - i)){
cnt++;
}
else{
break;
}
}
if (cnt>maxSub){
maxSub = cnt;
res = subs[i].substr(0, j - i);
}
}
}
}
return make_pair(maxSub, res);
}

int main(){
string str = "abababc";
pair<int, string> res = fun(str);
cout << res.first << endl;
cout << res.second << endl;

return 0;
}



标签:子串,cnt,subs,substr,int,++,len,次数,字符串
From: https://blog.51cto.com/u_15899184/5904051

相关文章

  • java-字符串
    1.不可变字符串String类没有提供修改字符串的方法。可以采用这种方式进行修改Stringstr="greeting";str=str.substring(0,3)+"p!";2.检测字符串是否相等s.equals(t)一定不......
  • 剑指offer:数组中出现次数超过一半的数字
    题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因......
  • 北理工45. 【字符】合并字符串
    45.【字符】合并字符串 输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。输入:          ......
  • 哈希之应用--删除字符串
    一问题描述  两个字符串A、B。从A中剔除存在于B中的字符。比如A=“helloworld”,B="er",那么剔除之后A变为"hllowold"。空间复杂度要求是O(1),时间复杂度越优越好。二......
  • HJ212_2017 协议字符串
    #!/usr/bin/python3#coding=utf-8importtime'''由数据字典生成HJ212_2017协议字符串'''defencode(DIC_HJ212_2017):_data=''forkey,val......
  • Django 操作数据库 出现 too many connections错误 连接次数过多
    通过CONN_MAX_AGE优化Django的数据库连接https://www.cnblogs.com/aaron-agu/p/10380559.html ......
  • C++ 字符串字母大小写转换
    C++ 字符串字母大小写转换使用algorithm,里面的tolower(转小写)toupper(转大写) #include<iostream>#include<string>usingnamespacestd;#include<algorithm> i......
  • String.join() 字符串拼接
    例1:classProgram{staticvoidMain(string[]args){List<string>list=newList<string>();list.Add("a");list.Add("b"......
  • 7-6 字符串中的十六进制整数转换成十进制整数
    问题输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字......
  • 对象,数组及字符串的操作方法
    一、对象操作方法  对象的操作的语法分为点语法和数组关联语法两种,点语法是对象名.键,数组关联语法是对象名['键']。值得注意的是,点语法的键不能是变量,变量必须要用数......