• 10A:子串计算


    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    给出一个只包含0和1的字符串(长度在1到100之间),求其每一个子串出现的次数。

    输入
    一行,一个01字符串。
    输出
    对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。按子串的字典序从小到大依次输出,每行一个。
    样例输入
    10101
    样例输出
    0 2
    01 2
    1 3
    10 2
    101 2
     1 #include<iostream>
     2 #include<map>
     3 #include<vector>
     4 using namespace std;
     5 map<string, int>m;
     6 int main(){
     7     string a;
     8     cin>>a;
     9     int i, j;
    10     for(i = 0; i < a.length(); i++){
    11         for(j = 1; j+i <= a.length(); j++){
    12             string ss = a.substr(i,j);
    13             m[ss]++;
    14         }
    15     }
    16     map<string, int>::iterator it = m.begin();
    17     for(it = m.begin(); it!=m.end(); it++){
    18         if(it->second<=1) continue; 
    19         cout<<it->first<<" "<<it->second<<endl;
    20     }
    21     return 0;
    22 }

    备注:枚举就行了。关键是我对map和string的用法都有点陌生了……我看的一个代码还写了个string数组用来记录子串,但其实完全没必要。

    要注意的就是map的迭代器的用法,别忘了orz

    还有substr的第一个参数是起点,第二个参数是长度,而用j来枚举长度要注意j最小是1,而最大j+i是可以达到a.length()的

  • 相关阅读:
    python爬虫之企某科技JS逆向
    国务院办公厅放假通知信息获取
    python爬虫之JS逆向某易云音乐
    python爬虫之JS逆向
    实验二验收1
    实验二验收3
    密码工程小素数
    密码工程扩展欧几里得算法
    数据转换位串字节数组
    实验二验收2
  • 原文地址:https://www.cnblogs.com/fangziyuan/p/13113923.html
Copyright © 2020-2023  润新知