c++题解 | #查找兄弟单词 30行代码#

查找兄弟单词

http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main (){
    int N, k;
    cin >> N;
    vector<string> input(N), output;
    for(int i = 0; i < N; ++i)
        cin >> input[i];
    string target;
    cin >> target >> k;
    for(int i = 0; i < N; ++i){
        bool flag = true;
        if(input[i].size() != target.size() || input[i] == target)
            continue;
        for(int j = 0; j < input[i].size(); ++j){
            string::iterator it = find(input[i].begin(), input[i].end(), target[j]);
            if(it == input[i].end() || count(input[i].begin(), input[i].end(), *it) != count(target.begin(), target.end(), *it))
                { flag = false; break;}
        }
        if(flag == true)
            output.push_back(input[i]);
    }
    sort(output.begin(), output.end());
    cout << output.size() << endl;
    if(k <= output.size())
        cout << output[k-1];
}
全部评论
优化算法,可以直接排序,对string排序,排序之后如果相等那么就是兄弟,这个算法更好一些
点赞 回复 分享
发布于 2022-03-08 19:11

相关推荐

海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务