题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool isbro(string s1,string s2){
if(s1.length()!=s2.length()) return false;
else{
if(s1==s2) return false;
int ap[26]={0};
for(int i=0;i<s1.length();i++){
ap[s1[i]-'a']++;
ap[s2[i]-'a']--;
}
for(int i=0;i<26;i++){
if(ap[i]!=0){return false;}
}
//时间复杂度O (N),但是要多花常数个空间
return true;
}
}
int main() {
int n,number;
cin>>n;
vector<string> v1(n);
vector<string> v2;
for(int i=0;i<n;i++){
cin>>v1[i];
}
string s1;
cin>>s1;
cin>>number;
for(int i=0;i<n;i++){
if(isbro(s1,v1[i])){
v2.push_back(v1[i]);
}
}
sort(v2.begin(), v2.end());
cout<<v2.size()<<endl;
if(number<v2.size()){
cout<<v2[number-1]<<endl;
}
}
// 64 位输出请用 printf("%lld")
查看10道真题和解析