C++的思路与解题
兄弟单词:
1,不能一样 :用 string判断
2,长度相同 :用 multiset.zise()判断
3,每一种的元素数量相同:用(multiset)判断
#include <iostream>
using namespace std;
#include <string>
#include <set>
#include <vector>
int main()
{
string str,taget;
vector<string> T;
multiset<string> bro;//可以有相同兄弟单词
multiset<char> lis1;
multiset<char> lis2;
int size=0,i=0;
int num=0,k=0;
cin >>num;
for(i=0;i<num;i++)
{
cin>>str;
T.push_back(str);
}
cin>>taget>>k;
for(i=0;i<taget.size();i++)//目标放到可以重复且排序的lis1里
{
lis1.insert(taget[i]);
}
for(vector<string>::iterator it=T.begin();it!=T.end();it++)
{
for(i=0;i<(*it).size();i++)//放到lis2
{
lis2.insert((*it)[i]);
}
if(taget.size()==(*it).size() && taget!=*it)//相同不能算兄弟字符
{
if(lis1==lis2)//元素排序,相同即为兄弟元素
{
bro.insert(*it);//自动排序
}
}
lis2.clear();
}
cout<<bro.size()<<endl;
T.clear();
if(k<=bro.size())
{
for(set<string>::iterator ak=bro.begin(); ak!=bro.end();ak++)
{
T.push_back(*ak);
}
cout<<T[k-1];
}
}
京公网安备 11010502036488号