如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。
01./*
02.如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,
03.问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。
04.*/
05.#include <iostream>
06.using namespace std;
07.
08.int isBroStr(char *str1, char *str2)
09.{
10. int a[26 * 2] = {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 < 26 * 2; 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.}