w1 洛谷T233243

 

 主要思路就是计算每一个长度为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;
}

posted @ 2023-04-11 18:45  RUI_26  阅读(9)  评论(0编辑  收藏  举报