查找兄弟单词

Posted chongjz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找兄弟单词相关的知识,希望对你有一定的参考价值。

输入描述:

先输入字典中单词的个数n

再输入n个单词作为字典单词

再输入一个单词,查找其在字典中兄弟单词的个数

再输入数字index索引第index个兄弟单词

3 abc bca cab abc 1

输出描述:

根据输入,输出查找到的兄弟单词的个数

将所有兄弟单词按照字典顺序排序,再输出第index个兄弟单词

2
bca

备注:

单词均由小写字母组成;相同单词不是兄弟单词。

考查:容器操作、泛型算法

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

//判断两个字符串是否是兄弟单词
int isBrother(string findString,string v)//值传递,不更改原字符串
{
    //将字符串排序后再比较是否相同
    sort(findString.begin(),findString.end());
    sort(v.begin(),v.end());
    if(findString==v)
        return 1;
    else
        return 0;
}

int main()
{
    int n,index;
    vector<string> words;//字典容器
    vector<string> bother;//兄弟单词容器
    string findWord;
    string cinWord;
    while(cin>>n)
    {
        words.clear();//每次重新来过都要清空容器
        bother.clear();
        for(int i=0; i<n; i++)
        {
            cin>>cinWord;
            words.push_back(cinWord);
        }
        cin>>findWord;
        cin>>index;
        for(int i=0; i<n; i++)
        {
            //若字典中第i个单词和findword不同,并且isBrother()返回1
            if(findWord!=words[i] && isBrother(findWord,words[i]))
            {
                bother.push_back(words[i]);//将第i个单词装入兄弟单词容器
            }
        }
        sort(bother.begin(),bother.end());//将兄弟单词容器排序
        cout<<bother.size()<<endl;
        if(index<=bother.size())
        {
            cout<<bother[index-1]<<endl;//输出第index个兄弟单词
        }
    }
    return 0;
}

C++11

 

以上是关于查找兄弟单词的主要内容,如果未能解决你的问题,请参考以下文章

牛客 HJ27 查找兄弟单词

华为机试HJ27:查找兄弟单词

华为python机试题目:查找兄弟单词称砝码单词倒排购物单合并表记录

从搜索文档中查找最小片段的算法?

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

片段(Java) | 机试题+算法思路+考点+代码解析 2023