题解 | #查找兄弟单词#
查找兄弟单词
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")
基本参考的高赞,加了点注释