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]; } }