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 }