1149.子串计算(map的应用)

题目描述:

给出一个01字符串(长度不超过100),求其每一个子串出现的次数。

输入:

输入包含多行,每行一个字符串。

输出:

对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

样例输入:
10101
样例输出:
0 2
01 2
1 3
10 2
101 2
来源:
2010年北京大学计算机研究生机试真题
#include<iostream>
#include<cstring>
#include<map>
using namespace std;

int main(){
    string s;
    while(cin>>s){
        map<string,int> m;  //声明一个map 
        for(int i=0;i<s.size();i++){
            for(int j=i;j<s.size();j++){
                string str=s.substr(i,j-i+1);
                m[str]++;    //这么使用的 
            }
        }
        map<string,int>::iterator iter; //声明一个指示器 
        for(iter=m.begin();iter!=m.end();iter++){
            if(iter->second>1) cout<<iter->first<<" "<<iter->second<<endl; 
        }
    }
    return 0;
}

 

posted @ 2018-10-01 17:33  bernieloveslife  阅读(285)  评论(0编辑  收藏  举报