以上是来自牛客网的一道题的描述’,看题意可能会有点难懂,在这里我大致疏通一哈题意:
先输入字典中单词的个数n,再输入n个单词作为字典单词。
再输入一个单词s1,查找其在字典中兄弟单词的个数m
再输入数字k
根据输入,输出查找到的兄弟单词的个数m
然后输出查找到的兄弟单词的第k个单词。
题目简单,就不描述思路了,直接上代码,代码简单易懂
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool isbother(string str1,string str2)//判断是否是兄弟单词的方法
{
if(str1.size()==str2.size())
{
if(str1==str2)
return false;
sort(str1.begin(),str1.end());
sort(str2.begin(),str2.end());
if(str1==str2)//兄弟单词只是字母顺序不同
return true;
}
return false;
}
int main()
{
int n;
while(cin>>n)
{
string str,s1,s2;
vector<string> ve;
for(int i=0;i<n;i++)
{
cin>>str;
ve.push_back(str);
}
sort(ve.begin(),ve.end());
int k=0;
cin>>s1;
cin>>k;
int m=0;
for(int i=0;i<n;i++)
{
if(isbother(s1,ve[i]))
{
m++;
if(m==k)
s2=ve[i];
}
}
if(!ve.empty())
{
cout<<m<<endl;
}
if(m>=k)//确保s2存在
cout<<s2<<endl;
}
return 0;
}
小白一只,若有错,欢迎指出=-=