题解 | #子串计算#
子串计算
https://www.nowcoder.com/practice/bcad754c91a54994be31a239996e7c11
#include<string>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
struct cishu {
string str;
int num;
};
bool cmp(cishu cs1, cishu cs2) {
if (cs1.str < cs2.str)
return true;
return false;
}
int main() { //10101
string str;
getline(cin, str);
vector<cishu> res;
cishu cs[1];
//str.pop_back();
for (int i = 0; i < str.size(); i++) {
string result = "";
for (int j = 1; j <= str.size()-i; j++) {
//result += str[j];
result=str.substr(i,j);
//printf("*****%s\n", result.c_str());
cs[0].str = result;
cs[0].num = 1;
int flag = 0;
if (res.size() != 0) {
for (int j = 0; j < res.size(); j++) {
if (res[j].str == result) {
res[j].num++;
flag = 1;
break;
}
}
if (flag == 0) {
res.push_back(cs[0]);
}
}
else {
res.push_back(cs[0]);
}
}
}
sort(res.begin(), res.end(),cmp);
//printf("%s\n", str.c_str());
for (int i = 0; i < res.size(); i++) {
if(res[i].num>=2)
printf("%s %d\n", res[i].str.c_str(), res[i].num);
}
}

