题解 | 查找兄弟单词

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68?tpId=387&tqId=36851&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
/*思路:
1、判断是否兄弟单词{1单词不能相同;2、满足单词长度一样;3满足排序后单词相同}
2、将兄弟单词加入字符串数组中,输出数组长度;
3、将兄弟单词字符串数组排序后输出第k位。*/
bool isBrother(string s1, string s2) {
    if (s1.length() == s2.length() ){
        if (s1 == s2)
            return false;
        sort(s1.begin(), s1.end());
        sort(s2.begin(), s2.end());
        if (s1 == s2)
            return true;
    }
    return false;
}
int main() {
    int n;//单词数量
    cin >> n;
    vector<string> str(n);//输入n个单词的字符串数组
    for (int i = 0; i < n; i++)
        cin >> str[i];
    string x;//要查找的x单词
    cin >> x;
    int k;//要查找的第k个兄弟单词
    cin >> k;
    vector<string> bro;//符合兄弟单词的字符串数组
    for (int i = 0; i < n; i++) {
        if (isBrother(str[i], x))
            bro.push_back(str[i]);
    }
    sort(bro.begin(), bro.end());
    cout << bro.size() << endl;
    if(k<=bro.size())
        cout << bro[k - 1] << endl;
    return 0;
}

// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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