子串计算——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;
}

猜你喜欢

转载自blog.csdn.net/qq_38030194/article/details/80791343