主要思路就是计算每一个长度为2的子串出现的次数,计数的同时用数组记录次数,打擂台找到出现次数最多的子串,首字符出现的位置就是数组的下标。最后输出出现最多的子串。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int cnt[100];
int main()
{
int n,max=-1;
string s;
cin>>n;
cin>>s;
for(int i=0;i<n-1;++i){
string a=s.substr(i,2); //取第i个字符作为首字符的子串
int f=s.find(a);
if(f==-1){ //未找到该子串
cnt[i]=0;
continue;
}
else{ //找到该子串
while(f!=-1){ //向后查找直到找不到为止
cnt[i]++; //计数
f=s.find(a,f+1); //向后查找
}
}
if(cnt[i]>max){
max=cnt[i]; //找出现最多子串的出现次数
}
}
for(int i=0;i<n-1;++i){
if(cnt[i]==max){ //找到出现最多的子串
string a=s.substr(i,2); //取该子串
cout<<a<<endl; //输出
break; //找到后直接跳出循环
}
}
return 0;
}
搜索
复制
标签:子串,cnt,洛谷,string,int,max,次数,w1,T233243 From: https://www.cnblogs.com/ruiyifei/p/17307288.html