题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include<bits/stdc++.h>
using namespace std;
vector <string> v;//all words
vector <string> v1;//brother words
int main() {
string s1, s2; int n;
cin >> n; //the num of words
int k; int cnt = 0;
for (int i = 0; i < n; i++) {
cin >> s1;
v.push_back(s1);
}
cin >> s2; cin >> k;//word & k
string s4 = s2;
sort(s4.begin(), s4.end());
for (int i = 0; i < n; i++)
{
string s3 = v[i];
sort(s3.begin(), s3.end());
if (s3 == s4 && v[i] != s2 && v[i].size() == s4.size()) {//这个地方容易错,比较不相等要用没排字典序的,比较是兄弟要用都排过字典序的
v1.push_back(v[i]);
cnt++;
}
}
sort(v1.begin(), v1.end());
/*cout << cnt << endl;
cout << v1[k - 1];*/
if (v1.size() == 0) { cout << 0; }
else if ((v1.size() > 0 && k > v1.size()) || v1.size() > 0 && k < 1) { cout << v1.size() << endl; }
else {
cout << v1.size() << endl; cout << v1[k - 1];
}
return 0;
using namespace std;
vector <string> v;//all words
vector <string> v1;//brother words
int main() {
string s1, s2; int n;
cin >> n; //the num of words
int k; int cnt = 0;
for (int i = 0; i < n; i++) {
cin >> s1;
v.push_back(s1);
}
cin >> s2; cin >> k;//word & k
string s4 = s2;
sort(s4.begin(), s4.end());
for (int i = 0; i < n; i++)
{
string s3 = v[i];
sort(s3.begin(), s3.end());
if (s3 == s4 && v[i] != s2 && v[i].size() == s4.size()) {//这个地方容易错,比较不相等要用没排字典序的,比较是兄弟要用都排过字典序的
v1.push_back(v[i]);
cnt++;
}
}
sort(v1.begin(), v1.end());
/*cout << cnt << endl;
cout << v1[k - 1];*/
if (v1.size() == 0) { cout << 0; }
else if ((v1.size() > 0 && k > v1.size()) || v1.size() > 0 && k < 1) { cout << v1.size() << endl; }
else {
cout << v1.size() << endl; cout << v1[k - 1];
}
return 0;
}