题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//核心代码,判断是否是兄弟单词
bool isbrother(string s1, string s2)
{
if (s1.size() == s2.size())//首先长度要相等,否则return false
{
if (s1 == s2)//完全相等也false
return false;
//下面是关键,对两个字符串按字典排序
//排序后完全一样的,才是兄弟单词,返回true
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
if (s1 == s2)
return true;
}
return false;
}
int main() {
int n, k;//n记录单词数,k为x的兄弟单词位置
vector<string> dic;//存储所有单词
vector<string> bro;//存储挑选出来的兄弟单词
string word;//临时存储单词,最后存单词x
//输入
cin >> n;
while (n--)//读入所有单词到词典dic
{
cin >> word;
dic.push_back(word);
}
cin >> word;//读入单词x
cin >> k;//读入要找第几个兄弟单词
//处理输入
for (auto str : dic)//遍历词典
{
if (isbrother(str, word))//判断是否是兄弟单词
{
bro.push_back(str);//是就加入bro词典
}
}
sort(bro.begin(), bro.end());//bro词典按字典排序
//输出
cout << bro.size() << endl;
if (k <= bro.size())
{
cout << bro[k-1];//第k个数下标是k-1
}
return 0;
}
// 64 位输出请用 printf("%lld")
基本参考的高赞,加了点注释
查看11道真题和解析