长度为2的子串
题号:T226686 长度为2的子串
题目链接:https://www.luogu.com.cn/problem/T226686
题目描述
给你一个长度为 nn 的由大写的英文字母组成的字符串,请你找出出现频率最高的长度为2的子串。
输入格式
包括两行。第一行是一个正整数n,表示字符串长度。第二行是长度为n的大写英文字母组成的字符串。(2<=n<=1002<=n<=100)
输出格式
包括一行。一个长度为2的字符串,该字符串为输入字符串的子串,在输入字符串中出现次数最多。若有多个出现频率相同且最高的子串,输出第一次出现的那个子串。
输入输出样例
7 ABACABA
AB
解题思路:
1.由于字符串长度最长只有100,因此这道题可以直接暴力枚举。
2.比较每两组字符串是否相同,并记录位置。
3.输出出现次数最多的位置。(靠前)
代码样例:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
char k[105];
int a[105]={0};
int b[105]={0};
cin>>n;
for(int i=0;i<n;i++)
{
cin>>k[i];
a[i]=k[i]-'0'; //方便比较把字符串数组放入整型数组里面,其实没有必要
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1;j++)
{
if(i!=j)
if(a[i]==a[j]&&a[i+1]==a[j+1]) //暴力枚举,时间复杂度为o(n^2)
b[i]++; //记录位置
}
}
for(int i=0;i<n;i++)
{
int kk=*max_element(b,b+n); //找出出现次数最多的位置 输出
if(b[i]==kk)
{cout<<k[i]<<k[i+1];return 0;} //由于输出之后直接return 0;了 所以一定是符合题目要求的最先出现的那一组
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异