如果兩個字元串的字元一樣,但是順序不一樣,被認為是兄弟字元串, 問如何在迅速比對兄弟字元串(如,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'不計入字元串長度。