子串计算
给出一个只包含0和1的字符串(长度在1到100之间),求其每一个子串出现的次数。
时间限制:1000 内存限制:65536
输入 一行,一个01字符串。
输出 对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。按子串的字典序从小到大依次输出,每行一个。
样例输入
10101
样例输出
0 2 01 2 1 3 10 2 101 2
思路: 利用双重循环,找到所有的子集,然后统计遍历,如果出现次数大于1的,就输出 length() 和size()是相同作用
#include<iostream>
#include<map>
using namespace std;
map<string, int>m;
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;
}
|