B. Two-gram
题目链接-B. Two-gram
题目大意
给你一个字符串,找出现次数最多的长度为2的子串
解题思路
- 开一个二维数组
t[][]
,用下标分别记录子串的两个字母 a , b a,b a,b,t[a][b]++
来计数 - 然后用两层for循环遍历该二维数组求最大值,并记录最大值对应的两个字符
- 具体操作见代码
附上代码
#include<bits/stdc++.h>
using namespace std;
int t[31][31];
int main(){
int n;
string s;
cin>>n>>s;
for(int i=0;i<n-1;i++){
int a=s[i]-'A';
int b=s[i+1]-'A';
t[a][b]++;
}
int max=0;
int x,y;
for(int j=0;j<26;j++){
for(int k=0;k<26;k++){
if(t[j][k]>max){
x=j;
y=k;
max=t[j][k];
}
}
}
cout<<char(x+'A')<<char(y+'A')<<endl;
return 0;
}