题解 | #查找兄弟单词#

查找兄弟单词

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")

基本参考的高赞,加了点注释

全部评论

相关推荐

点赞 评论 收藏
分享
大冰箱文森特:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
自来熟的放鸽子能手面...:等捞就好了,你这种情况被捞的概率挺大的
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务