第一周作业--长度为2的字串
题目描述
给你一个长度为 n 的由大写的英文字母组成的字符串,请你找出出现频率最高的长度为2的子串。
输入格式
包括两行。第一行是一个正整数n,表示字符串长度。第二行是长度为n的大写英文字母组成的字符串。(2<=n<=100)
输出格式
包括一行。一个长度为2的字符串,该字符串为输入字符串的子串,在输入字符串中出现次数最多。若有多个出现频率相同且最高的子串,输出第一次出现的那个子串。
输入输出样例
输入
7
ABACABA
输出
AB
首先看到题目想到用map映射来做但是因为不熟练写到后面写不下去了,于是使用数组和c++自带的函数来解题。
题目要求是长度为2的子串,可以使用substr()来截取子串。并用find()函数来查找并记录位置
代码如下:
#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);//从s中截取长度为2的子串
int f=s.find(a);//查找各个子串在s中的位置
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;
}
【推荐】国内首个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的设计差异