• 求一个字符串中连续出现次数最多的子串


     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4 using namespace std;
     5 string my_string(string s,int &count)
     6 {
     7     vector<string> p;
     8     vector<int>result_cnt;
     9     vector<string>result_str;
    10     for(int i=0;i<s.length();i++)
    11     {
    12         string temp(s.begin()+i,s.end());
    13         p.push_back(temp);
    14     }
    15 
    16     int M=(s.length()+1)/2;
    17     for(int j=1;j<=M;j++)
    18     {
    19         vector<int> sum;
    20         for(int k=0;k<p.size()-1;k++)
    21         {
    22             
    23             int flag=1;
    24             int q=k;
    25             while(1)
    26             {
    27                 if(p[q].size()<j)
    28                     break;
    29                 else
    30                 {
    31                     string s1(p[q].begin(),p[q].begin()+j);
    32                 
    33                     if(q+j>=p.size() || p[q+j].size()<j)
    34                         break;
    35                     else
    36                     {
    37                         string s2(p[q+j].begin(),p[q+j].begin()+j);
    38                 
    39                         if(s1==s2)
    40                         {
    41                             q+=j;
    42                             flag++;
    43                         }
    44                         else
    45                             break;
    46                     }
    47                 }
    48             }
    49             sum.push_back(flag);
    50         }
    51         int max=sum[0],index=0;
    52         for(int t=1;t<sum.size();t++)
    53         {
    54             if(sum[t]>max)
    55             {
    56                 max=sum[t];
    57                 index=t;
    58             }
    59         }
    60         string ss(p[index].begin(),p[index].begin()+j);
    61         result_cnt.push_back(max);
    62         result_str.push_back(ss);
    63     }
    64     int id=0;
    65     count=result_cnt[0];
    66     for(int z=1;z<result_cnt.size();z++)
    67     {
    68         if(result_cnt[z]>count)
    69         {
    70             count=result_cnt[z];
    71             id=z;
    72         }
    73     }
    74     return result_str[id];
    75 }
    76 int main()
    77 {
    78     string s="abababcbcbcbcbcbcdef";
    79     int count=0;
    80     string x;
    81     x=my_string(s,count);
    82     cout<<x<<endl;
    83     cout<<count<<endl;
    84     system("pause");
    85     return 0;
    86 }
  • 相关阅读:
    如何搜索 git 提交记录
    使用Mongo进行分页
    mongodb 数据自动备份
    linux 添加环境变量
    centos7安装bbr
    centos7安装node
    [shell]输出内容到剪切板
    centos 7 已经开启 22 端口但无法连接
    一些有趣的 js 包
    机房选择
  • 原文地址:https://www.cnblogs.com/riden/p/4664834.html
Copyright © 2020-2023  润新知