如果兩個字符串的字符一樣,但是順序不一樣,被認爲是兄弟字符串, 問如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)
#include <iostream.h>
#include<string.h>
bool Isbrother(char *str1,char *str2)
{
if(!str1&&!str2)
return true;
else if(!str1||!str2)
return false;
else
{
if(strlen(str1)!=strlen(str2))
return false;
int index[128]={0};
for(int i=0;i<strlen(str1);++i)
{
++index[str1[i]];
--index[str2[i]];
}
for(i=0;i<128;++i)
if(index[i]!=0)
return false;
return true;
}
}
void main()
{
char str1[]="ab`cd/efg",str2[]="gf/edcba`";
if(Isbrother(str1,str2))
cout<<"is brother"<<endl;
else
cout<<"not brother"<<endl;
}
sizeof 是求變量或類型的存儲長度。而strlen 是統計字符串中字符的個數,不包括終止符‘/0’。sizeof 是求得實體(就是"()"裏面包含的變量或者類型字)的字節單位長度。按照類型來判斷;strlen 是求得字符的長度,累加搜索,直到 /0截至爲止。
sizeof(xxx)是個保留字,用來求分配給xxx的內存空間大小的,舉例來說sizeof(int)就是求分配給int型變量的內存大小。strlen(const char*)這是個字符串相關函數,其中,參數必須是個字符指針(指向字符串的指針)或字符串,而返回值就是這個指針指向的字符串的長度,字符串結束必須以'/0'爲標記,但'/0'不計入字符串長度。