题目链接:
描述
给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
输入描述:
输入包含多行,每行一个字符串。
输出描述:
对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
示例1
输入:
10101
输出:
0 2
01 2
1 3
10 2
101 2
源代码:
#include<iostream>
#include<string>
#include<map>
using namespace std;
//例题10.9 子串计算
int main()
{ //10101
string s;
while (cin >> s) {
map<string, int> maps;
for (int i = 0; i < s.size(); i++) {
for (int j = 1; i + j <= s.size(); j++) {
string s1 = s.substr(i, j);
if (maps.find(s1) == maps.end()) {
maps[s1] = 0;
}
maps[s1] += 1;
}
}
for (auto it : maps) {
if (it.second > 1) {
cout << it.first << " " << it.second << endl;
}
}
}
return 0;
}
提交结果: