zoukankan      html  css  js  c++  java
  • 算法训练 字串统计

    问题描述
      给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
    输入格式
      第一行一个数字L。
      第二行是字符串S。
      L大于0,且不超过S的长度。
    输出格式
      一行,题目要求的字符串。

      输入样例1:
      4
      bbaabbaaaaa

      输出样例1:
      bbaa

      输入样例2:
      2
      bbaabbaaaaa

      输出样例2:
      aa
    数据规模和约定
      n<=60
      S中所有字符都是小写英文字母。
    提示
      枚举所有可能的子串,统计出现次数,找出符合条件的那个
    题目分析
      建立两个map,一个记录子串出现次数,一个记录子串的序号index
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <vector>
    #include <stdlib.h>
    #include <cstdlib>
    #include <string.h>
    #include <string>
    #include <cmath>
    #include <map>
    using namespace std;
    int n;
    string s;
    map<string, int> mymap;//记录出现次数
    map<string, int> mymap2;//记录次序
    int main() {
        scanf("%d", &n);
        cin >> s;
        int len = s.length();
        int index = 0;
        string max_string;
        int max_sum = 0;
        for (int i = n; i <= len; i++) {
            for (int j = 0; j + i <= len; j++) {
                string t = s.substr(j, i);
                mymap[t]++;
                //cout <<t<<" "<<mymap[t] << endl;
                mymap2[t] = index++;
                if (mymap[t] > max_sum) {//如果次数最大
                    max_sum = mymap[t];
                    max_string = t;
                }
                else if (mymap[t] == max_sum) {//次数相同 
                    if (max_string.length() < t.length()) {//第一比长度
                        max_string = t;
                    }
                    else if (max_string.length() == t.length() && mymap2[t] < mymap2[max_string]) {//相同长度比 先后
                        max_string = t;
                    }
                }
            }
        }
        cout << max_string;
        return 0;
    }
  • 相关阅读:
    Pass360[最新].cpp
    在任意的远程桌面的session中运行指定的程序
    C++内存泄露的检测(三)
    在release模式下debug
    [转]VC Studio 使用技巧大全
    C++内存泄露的检测(一)
    获取系统用户所对应的配置路径
    关于Debug和Release之本质区别的讨论
    GDB 的使用
    struct termios
  • 原文地址:https://www.cnblogs.com/woxiaosade/p/10461010.html
Copyright © 2011-2022 走看看