尋找兄弟字符串

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

發佈了73 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章