兄弟字符串(转)

 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 }  

 

posted @ 2015-09-03 21:04  舒克_贝塔  阅读(585)  评论(0编辑  收藏  举报