题目链接
直接暴力,用map函数存每个子串出现的次数,子串的类型使用两层循环遍历。

#include<bits/stdc++.h>
using namespace std;
int main(){
	string str;
	map<string, int> mp;
	while(cin>>str){
		mp.clear();
		for(int i=0; i<str.size(); i++){
			for(int j=i; j<str.size();j++){
				string s;
				for(int k=i; k<=j;k++){ //注意这里要取等号
					s += str[k];
				}	
				mp[s]++; 
			}
		}
		for(auto it: mp){
			if(it.second > 1){
				cout<<it.first<<" "<<it.second<<endl;
			}
		}
	}
	return 0;
}