1 /* 2 如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串, 3 问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。 4 */ 5 #include <iostream> 6 using namespace std; 7 8 int isBroStr(char *str1, char *str2) 9 { 10 int a[60] = {0}; 11 int i, strLen; 12 13 if (!str1 && !str2) 14 return 1; 15 else if (!str1 || !str2) 16 return 0; 17 else 18 { 19 if(strlen(str1) != strlen(str2)) 20 return 0; 21 strLen = strlen(str1); 22 for(i = 0; i < strLen; i++) 23 { 24 ++a[str1[i] - 'A']; 25 --a[str2[i] - 'A']; 26 } 27 for(i = 0; i <60; i++) 28 if (a[i]) 29 return 0; 30 return 1; 31 } 32 } 33 34 int main() 35 { 36 char *str1 = "asdfaabAAB"; 37 char *str2 = "asdfAABaab"; 38 if (isBroStr(str1, str2)) 39 cout << " String 1 and String 2 are brothers!" << endl; 40 else 41 cout << " String 1 and String 2 are not brothers!" << endl; 42 system("PAUSE"); 43 return 0; 44 }