HJ27 查找兄弟单词

简介: HJ27 查找兄弟单词

题目

题目连接

解题

方法一:判断每个字符串中单词出现次数是否相等

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
int main(){
    int n,k;
    string t;
    cin>>n;
    vector<string> ss(n);
    for(int i=0;i<n;i++){
        cin>>ss[i];
    }
    cin>>t;
    cin>>k;
    //对目标字符串 统计字符出现个数
    vector<int> hash(26);
    for(char c:t){
        hash[c-'a']++;
    }
    multiset<string> set;//使用multiset可以自动按字典序排序,而且可以包含重复的
    for(string& s:ss){//遍历每个字符串,并统计字符出现个数
        vector<int> tmp(26);
        for(char c:s){
            tmp[c-'a']++;
        }
        bool flag=true;
        for(int i=0;i<26;i++){
            if(hash[i]==tmp[i]) continue;
            else{
                flag=false;
                break;
            }
        }
        if(flag&&s!=t) set.insert(s);//如果字符相等,那么插入集合中
    }
    int len=set.size();
    cout<<len<<endl;
    if(k<=len){//如果k比字典还要大,那么就不输出结果
        auto it=set.begin();
        while(k>1){
        it++;
        k--;
        }
        cout<<*it<<endl;
    }
}
相关文章
|
2月前
【每日一题Day130】LC1255得分最高的单词集合 | 回溯
【每日一题Day130】LC1255得分最高的单词集合 | 回溯
25 0
|
2月前
|
Python C++ 机器人
C/C++每日一练(20230419) 插入区间、单词拆分、不同路径
C/C++每日一练(20230419) 插入区间、单词拆分、不同路径
27 0
C/C++每日一练(20230419) 插入区间、单词拆分、不同路径
|
2月前
|
Python Java Go
Java每日一练(20230403) 字母异位词分组、删除链表的倒数第 N 个结点、合并区间
Java每日一练(20230403) 字母异位词分组、删除链表的倒数第 N 个结点、合并区间
39 0
Java每日一练(20230403) 字母异位词分组、删除链表的倒数第 N 个结点、合并区间
|
2月前
leetcode-2000:反转单词前缀
leetcode-2000:反转单词前缀
33 0
leetcode-2000:反转单词前缀
|
2月前
|
机器学习/深度学习 存储
【每日一题Day112】LC1233删除子文件夹 | 排序 字典树
【每日一题Day112】LC1233删除子文件夹 | 排序 字典树
30 1
|
9月前
|
存储
华为机试HJ27:查找兄弟单词
华为机试HJ27:查找兄弟单词
|
9月前
|
存储 容器
华为机试HJ31:单词倒排
华为机试HJ31:单词倒排
|
9月前
华为机试HJ65:查找两个字符串a,b中的最长公共子串
华为机试HJ65:查找两个字符串a,b中的最长公共子串
|
9月前
华为机试HJ59:找出字符串中第一个只出现一次的字符
华为机试HJ59:找出字符串中第一个只出现一次的字符
|
9月前
|
测试技术
华为机试HJ48:从单向链表中删除指定值的节点
华为机试HJ48:从单向链表中删除指定值的节点