子串計算——map

題目描述

給出一個01字符串(長度不超過100),求其每一個子串出現的次數。

輸入描述:

輸入包含多行,每行一個字符串。

輸出描述:

對每個字符串,輸出它所有出現次數在1次以上的子串和這個子串出現的次數,輸出按字典序排序。
示例1

輸入

複製
10101

輸出

複製
0 2
01 2
1 3
10 2

101 2

#include<iostream>
#include<map>
using namespace std;
map<string,int>mp;
int main()
{
    string s;
    while(cin>>s)
    {
        for(int i=0;i<s.size();i++)
        {
            string ans="";
            for(int j=i;j<s.size();j++)
            {
                ans+=s[j];
                mp[ans]++;
            }
        }
        map<string,int>::iterator it;
        for(it=mp.begin();it!=mp.end();it++)
        {
            if(it->second>1)
            {
                cout<<it->first<<' '<<it->second<<endl;
            }
        }

    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章