zoukankan      html  css  js  c++  java
  • 求一个字符串中连续出现次数最多的子串

    C++

    使用hash map存储每个子串出现的次数

     1 #include <iostream>
     2 #include <vector>
     3 #include <unordered_map>
     4 using namespace std;
     5 
     6 pair<int, string> fun(const string& str) {
     7     int len = str.length();
     8     if (len == 0){
     9         return make_pair(0,string(""));
    10     }
    11     unordered_map<string, int> map(len*len);
    12 
    13     pair<int, string> ret = make_pair(1, str.substr(0,1));
    14 
    15     for (int i = 0; i < len; ++i) {
    16         for (int j = 1; j < len - i + 1; ++j) {
    17             string substr = str.substr(i,j);
    18             if (map.find(substr) == map.end()) {
    19                 map[substr] = 1;
    20             } else {
    21                 map[substr] += 1;
    22                 if (map[substr] > ret.first) {
    23                     ret = make_pair(map[substr], substr);
    24                 } else if (map[substr] == ret.first && substr.length() > ret.second.length()) {
    25                     ret = make_pair(map[substr], substr);
    26                 }
    27             }
    28         }
    29     }
    30     return ret;
    31 };
    32 int main()
    33 {
    34     string str = "zhanghaeha";
    35     pair<int, string> rs = fun(str);
    36     cout<<rs.second<<":"<<rs.first<<endl;
    37     return 0;
    38 }
  • 相关阅读:
    day38_css
    day39_css_浮动_display
    day36_html
    线段树模板2 洛谷p3373
    hdu1257 最少拦截系统
    树的重心(DFS)
    树的直径(BFS)
    面向对象复习
    面向对象练习题
    面向对象的交互
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/5010973.html
Copyright © 2011-2022 走看看