题目描述
给出一个只包含0和1的字符串(长度在1到100之间),求其每一个子串出现的次数。
输入格式
一行,一个01字符串。
输出格式
对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。
按子串的字典序从小到大依次输出,每行一个。
这道题可以用"map",因为"map"可以直接用字符串调用,用 i 和 j 枚举端点,再用 substr 截取,最后再统计每一个子串出现的次数是否大于一
#include <bits/stdc++.h>
using namespace std;
int k;
map <string, int> m;
string s;
int main()
{
cin >> s;
for (int i = 0; i < s.size(); i++)
{
for (int j = i; j < s.size(); j++)
{
m[s.substr(i, j - i + 1)]++;
}
}
for (auto it : m)
{
if (it.second > 1)
{
cout << it.first << ' ' << it.second << '\n';
}
}
return 0;
}