测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A39800. 子串计算

填空题 中等

题目描述

子串计算

题目描述

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

输入

一行,一个01字符串。

输出

对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。按子串的字典序从小到大依次输出,每行一个。

样例输入

10101

样例输出

0 2

01 2

1 3

10 2

101 2

参考答案

#include<iostream> #include<map> using namespace std; map<string, int>m;//定义了一个用string作为索引,并拥有相关联的指向int的指针 int main(){ string a; cin>>a; int i, j; for(i = 0; i < a.length(); i++){ for(j = 1; j+i <= a.length(); j++){ string ss = a.substr(i,j); m[ss]++; } } map<string, int>::iterator it = m.begin(); for(it = m.begin(); it!=m.end(); it++){ if(it->second<=1) continue; cout<<it->first<<" "<<it->second<<endl; } return 0; }
上一题 下一题