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;
}
上一题
下一题