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;
    }
}
相关文章
|
6月前
【题解】NowCoder BC149 简写单词
【题解】NowCoder BC149 简写单词
61 15
|
7月前
leetcode-2000:反转单词前缀
leetcode-2000:反转单词前缀
50 0
leetcode-2000:反转单词前缀
华为机试HJ106:字符逆序
华为机试HJ106:字符逆序
128 1
|
存储
华为机试HJ27:查找兄弟单词
华为机试HJ27:查找兄弟单词
华为机试HJ51:输出单向链表中倒数第k个结点
华为机试HJ51:输出单向链表中倒数第k个结点
华为机试HJ65:查找两个字符串a,b中的最长公共子串
华为机试HJ65:查找两个字符串a,b中的最长公共子串
|
存储 算法 C++
剑指offer(C++)-JZ50:第一个只出现一次的字符(算法-其他)
剑指offer(C++)-JZ50:第一个只出现一次的字符(算法-其他)
|
存储 容器
华为机试HJ31:单词倒排
华为机试HJ31:单词倒排
|
算法 安全 Swift
LeetCode - #30 串联所有单词的子串(Top 100)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。