这怎么做啊?? 大佬教教我
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
unordered_set<string> get_substrings(string s) {
unordered_set<string> substrings;
for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length(); j++) {
substrings.insert(s.substr(i, j - i));
}
}
return substrings;
}
vector<int> get_uniqueness_factor(vector<string> names) {
vector<int> uniqueness_factors;
for (int i = 0; i < names.size(); i++) {
int uniqueness_count = 0;
unordered_set<string> substrings = get_substrings(names[i]);
for (int j = 0; j < names.size(); j++) {
if (i == j) {
continue;
}
unordered_set<string> other_substrings = get_substrings(names[j]);
bool is_unique = true;
for (string substring : substrings) {
if (other_substrings.find(substring) != other_substrings.end()) {
is_unique = false;
break;
}
}
if (is_unique) {
uniqueness_count += substrings.size();
}
}
uniqueness_factors.push_back(uniqueness_count);
}
return uniqueness_factors;
}
int main() {
int N;
cin >> N;
vector<string> names(N);
for (int i = 0; i < N; i++) {
cin >> names[i];
}
vector<int> uniqueness_factors = get_uniqueness_factor(names);
for (int factor : uniqueness_factors) {
cout << factor << endl;
}
return 0;
}
看代码哪里错了