题目简介:
给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
输入描述:
输出描述:
1
| 对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
|
输入
输出
思路:
利用map
的特性,能自动按key
进行排序,使用循环将子串全部存进map
即可。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream> #include <string> #include <vector> #include <algorithm> #include <unordered_map> #include <cmath> #include <iomanip> #include <set> #include <map>
using namespace std;
int main() { string str; while (cin >> str) {
map<string, int> maps;
for (int i = 0; i <= str.size(); i++) {
for (int j = 0; j < i; j++) {
maps[str.substr(j, i - j)]++; } }
map<string, int>::iterator item;
for (item = maps.begin(); item != maps.end(); item++) {
if (item->second > 1) cout << item->first << " " << item->second << endl; }
} }
|