题解 | #查找兄弟单词#
查找兄弟单词
http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include <iostream> using namespace std; int FindNum(string str, char a, int length) { int result = 0; for(int i=0; i<length; i++) { if(str[i] == a) { result++; } } return result; } int main() { int num; while(cin>>num) { //输入num个单词 string input[num]; for(int i=0; i<num; i++) { cin>>input[i]; } //输入str he k string str; cin>>str; int z; cin>>z; int length=str.size(); //查找兄弟单词 int iresult = num; for(int i=0; i<num; i++) { //如果长短不一样就不是兄弟 if(input[i].length() != length) { input[i]=""; iresult--; continue; } //如果两个完全一样就不是兄弟 else if(input[i] == str) { input[i]=""; iresult--; continue; } //如果每个字母的个数不一样就不是兄弟 for(int j=0; j<length; j++) { if(FindNum(input[i], str[j], length) != FindNum(str, str[j], length)) { input[i]=""; iresult--; break; } } } cout<<iresult<<endl; string result[iresult]; int index = 0 ; for(int i=0; i<num; i++) { if(input[i]=="") { continue; } result[index] = input[i]; index ++; } //兄弟单词字典排序(maopao) for(int i=0; i<iresult; i++) { for(int j=0; j<iresult-i-1;j++) { for(int m=0; m<length; m++) { if(result[j][m]<result[j+1][m]) { break; } else if(result[j][m]>result[j+1][m]) { swap(result[j], result[j+1]); break; } } } } if(z<iresult) { cout<<result[z-1]<<endl; } } return 0; }