题解 | #查找兄弟单词#

查找兄弟单词

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

用multiset字典里的重复单词也能够捕捉到,判断兄弟单词,最开始我想到的是排列组合,但是这样不好比对,参考了一下大佬的代码,发现判断兄弟单词,可以通过长度,单词的字符集是否完全相同来判断,那么这就衍生了两个方法,首先对字典遍历,遍历的单词要么hash一下看是否和原来的单词的字符集是一样的,要么两个单词排序一下,看是否相等。

#include <string>
#include <map>
#include <vector>
#include <set>
#include <algorithm>


using namespace std;

bool isbrother(string s1,string s2)
{
    if(s1.size()==s2.size()){
        if(s1==s2) return false;
        else {sort(s1.begin(),s1.end());
              sort(s2.begin(),s2.end());
              if(s1==s2) return true;
              else return false;
              
             }
        }//最外层if
    else return false;
    }

int main() {
    unsigned N;
    unsigned K;
    string str,wtfind;//want to find
    vector<string> word;
    multiset<string> brother;//插入的兄弟单词已经按字典序排好了
    cin>>N;
    unsigned size=0;
    while(N){
        cin>>str;
        word.push_back(str);
        N--;
        
    }//while
    cin>>wtfind;
    cin>>K;
    for(unsigned i = 0;i<word.size();i++){
        if(isbrother(wtfind,word[i])){
            
            brother.insert(word[i]);
        }
    }//for
    size = brother.size();
    cout<<size<<endl;
    if(size>=K){
        auto it = brother.begin();
        while(K){
            ++it;
            --K;
        }
        cout<<*(--it)<<endl;
    }
    
    
    
    
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-24 14:18
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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